2012-04-14 19 views
12

estoy construyendo aplicación web utilizando RESTNetbean 7.1.1 Glassfish 3.1.2REST ¿cómo pasar el parámetro de ruta vacía?

tengo 2 URL:

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

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

Cuando el cliente envía una solicitud a través primera URL, el servlet de abajo se llama y hacer algún tipo de proceso.

@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??? 
} 

Pero también quiero una segunda URL para llamar a este servlet.

me pareció que el servlet sería llamado y yo sólo puede comprobar customerName == null y luego llamar a diferentes SQL y así sucesivamente.

Pero cuando el cliente envía una solicitud a través segundos URL (es decir, sin parámetro de ruta), el servlet no está siendo llamado por la URL no tiene nombre} {parámetro de ruta.

No es posible llamar segunda URL e invocar el servlet de arriba?

Una alternativa que se me ocurre es utilizar query parameter:

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

Tal vez pueda analizarlo y ver si "value" es nulo entonces actuar en consecuencia ..

Respuesta

26

Puede especificar una expresión regular para su parámetro Path (ver 2.1.1. @Path).

Si utiliza .* partidos ambos nombres vacío vacío y no Así que si usted escribe:

@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??? 
} 

que coincidirá tanto "http: // miPágina/recurso/getall" y "http: // miPágina/resource/getall/name ".

+0

Gracias, lo intenté anteriormente y funcionó a la perfección! –

+0

¡Hola! ¿Qué pasa si la situación es próxima: "http: // miPágina/recurso/getall/nombre de tipo JSON =" "http: // miPágina/recurso/getAll type = json" La solución anterior no funciona. – Andrew

+0

@Andrew por favor crea una nueva pregunta. Sin contexto, no es posible responder la pregunta. – 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

coinciden con o sin nombre, –

Cuestiones relacionadas