2012-08-09 15 views
30

Mi requisito es como sigue:cómo enviar una matriz en la solicitud de URL

me quieren dar nombre actor, fecha, fecha de inicio y fin de obtener todos los filmes actuó en ese período.

Por esa razón, mi solicitud de servicio es la siguiente.

http://localhost:8080/MovieDB/GetJson?name=Actor&startDate=20120101&endDate=20120505 

Ahora, quiero mejorarlo. Quiero dar una fecha de inicio, fecha de finalización y más de un nombre de actor y quiero ver todas esas películas de actores en ese período.

No estoy seguro de cómo debería mi url parecer apoyar tal cosa.

Estoy escribiendo un servicio web basado en Java utilizando la primavera.

A continuación código es apoyar un actor

@RequestMapping(value = "/GetJson", method = RequestMethod.GET) 
    public void getJson(@RequestParam("name") String ticker, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate) { 
    //code to get results from db for those params. 
} 

Una solución que estoy pensando es el uso de un símbolo% para separar nombres de actores. Por ejemplo:

http://localhost:8080/MovieDB/GetJson?name=Actor1%Actor2%Actor3&startDate=20120101&endDate=20120505 

Ahora, en el controlador voy a analizar la cadena con el nombre% y volver todos los nombres de los actores.

¿Es esta una buena manera de hacer esto o hay un enfoque estándar?

Gracias

+1

Creo que esto está bien para 3 o 4 actores. Pero si quieres pasar 100 actores, tal vez puedas usar POST y luego pasar un objeto javascript. El objeto puede tener pares de nombre-valor para cada actor. ¿Qué piensas? Perdón por una respuesta incompleta – Victor

+0

No entiendo a qué te refieres con el uso de la publicación. ¿Puedes señalarme un ejemplo? Gracias – javaMan

Respuesta

77

separada por comas:

http://localhost:8080/MovieDB/GetJson?name=Actor1,Actor2,Actor3&startDate=20120101&endDate=20120505 

o:

http://localhost:8080/MovieDB/GetJson?name=Actor1&name=Actor2&name=Actor3&startDate=20120101&endDate=20120505 

o:

http://localhost:8080/MovieDB/GetJson?name[0]=Actor1&name[1]=Actor2&name[2]=Actor3&startDate=20120101&endDate=20120505 

cualquier manera, su firma del método tiene que ser:

@RequestMapping(value = "/GetJson", method = RequestMethod.GET) 
public void getJson(@RequestParam("name") String[] ticker, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate) { 
    //code to get results from db for those params. 
} 
+1

, pero en caso de que tengas 1000 tamaño de matriz, entonces no puedes escribir todo esto separado na .. ?? – Krishna

+4

¿Existe un enlace de "Documentación de primavera" que pueda señalar con respecto a esas 3 formas diferentes de escribir las URL? – TPPZ

+5

el acercamiento uno (separado con comas) es diferente de los otros dos. Probado en una aplicación Java (lado del servidor respaldado por undertow), si pasa 'name = Actor1, Actor2, Actor3', el servidor no obtendrá una matriz para su parámetro' name', en su lugar obtendrá una sola cadena: 'Actor1, Actor2, Actor3' param. Los otros dos son diferentes, todos dan el parámetro 'name' con una matriz de valores:' ["Actor1", "Actor2", "Actor3"] '. De acuerdo con http://stackoverflow.com/questions/6243051/how-to-pass-an-array-within-a-query-string, muchas otras estructuras también tratan el acercamiento uno como un param de consulta de cadena única en lugar de una matriz –

Cuestiones relacionadas