Вопрос по web-services, spring-mvc, url, spring, java – как отправить массив в запросе URL
Мое требование заключается в следующем:
Я хочу дать имя актеру, дату начала, дату окончания и получить все фильмы, в которых он снимался в тот период.
По этой причине мой запрос на обслуживание такой.
http://localhost:8080/MovieDB/GetJson?name=Actor&startDate=20120101&endDate=20120505
Теперь я хочу улучшить это. Я хочу дать дату начала, дату окончания и более одного имени актера и хочу посмотреть все эти фильмы актеров за этот период.
Я не уверен, как мой URL должен выглядеть, чтобы поддержать такую вещь.
Я пишу веб-сервис на основе Java с использованием Spring.
Ниже код для поддержки одного актера
@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.
}
Я думаю, что одним из решений является использование символа% для разделения имен актеров. Например:
http://localhost:8080/MovieDB/GetJson?name=Actor1%Actor2%Actor3&startDate=20120101&endDate=20120505
Теперь в контроллере я проанализирую строку имени с% и верну имена всех актеров.
Это хороший способ сделать это или есть стандартный подход?
Спасибо
http://localhost:8080/MovieDB/GetJson?name=Actor1,Actor2,Actor3&startDate=20120101&endDate=20120505
или же:
http://localhost:8080/MovieDB/GetJson?name=Actor1&name=Actor2&name=Actor3&startDate=20120101&endDate=20120505
или же:
http://localhost:8080/MovieDB/GetJson?name[0]=Actor1&name[1]=Actor2&name[2]=Actor3&startDate=20120101&endDate=20120505
В любом случае, подпись вашего метода должна быть:
@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.
}
name=Actor1,Actor2,Actor3
сервер не получит массив для вашегоname
параметр, вместо этого вы получите одну строку:Actor1,Actor2,Actor3
пары. Два других отличаются, они все даютname
параметр с массивом значений:["Actor1", "Actor2", "Actor3"]
, В соответствии сstackoverflow.com/questions/6243051/…многие другие фреймворки также рассматривают первый подход как один параметр запроса строки вместо массива