2012-04-14 16 views
12

buduję aplikację REST internetową korzystając Netbean 7.1.1 Glassfish 3.1.2REST jak przekazać parametr pustej ścieżki?

Mam 2 URL:

"http://myPage/resource/getall/name" (get some data by name) 

"http://myPage/resource/getall" (get all data) 

Kiedy klient wysyła żądanie przy użyciu pierwszego adresu URL, poniżej servlet nazywa i zrobić proces.

@Path("getall/{name}") 
@GET 
@Produces("application/json") 
public Object Getall(@PathParam("name") String customerName) { 
     //here I want to call SQL if customerName is not null. is it possible??? 
} 

Ale chcę też, aby drugi adres URL wywoływał ten serwlet.

Myślałem, że aplet będzie wywoływany i mogę po prostu sprawdzić customerName == null, a następnie wywołać różne SQL i tak dalej.

Ale gdy klient wysyła żądanie za pomocą drugiego adresu URL (tj. Bez parametru ścieżki), serwlet nie jest wywoływany, ponieważ adres URL nie ma parametru ścieżki {nazwa}.

Nie można wywołać drugiego adresu URL i wywołać apletu powyżej?

Jedną z alternatyw mogę myśleć jest użycie query parameter:

http://myPage/resource/getall?name=value 

Może mogę analizować je i sprawdzić, czy "value" jest null następnie podjąć odpowiednie działania ..

Odpowiedz

26

Można określić wyrażenie regularne Twój parametr ścieżki (patrz 2.1.1. @Path).

Jeśli używasz .* mecze zarówno pustych i nazw pustych Więc jeśli napisać:

@GET 
@Path("getall/{name: .*}") 
@Produces("application/json") 
public Object Getall(@PathParam("name") String customerName) { 
     //here I want to call SQL if customerName is not null. is it possible??? 
} 

będzie pasować zarówno "http: // Mypage/resource/GETALL" i „http: // Mypage/resource/getall/name ".

+0

Dziękuję, spróbowałem powyżej i działałem idealnie! –

+0

Cześć! A co, jeśli sytuacja jest następująca: "http: // myPage/resource/getall/name? Type = json" "http: // myPage/resource/getall? Type = json" Powyższe rozwiązanie nie działa. – Andrew

+0

@Andrew, proszę utworzyć nowe pytanie. Bez żadnego kontekstu nie można odpowiedzieć na pytanie. – andih

-2
@GET 
@Path("getall{name:(/[^/]+?)?}") 
@Produces("application/json") 
public Object Getall(@PathParam("name") String customerName) { 
    //here I want to call SQL if customerName is not null. is it  

possible??? 
    } 
+0

pasuje zarówno z nazwą, jak i bez niej, –

Powiązane problemy