Java 如何在url请求中发送数组
我的要求如下: 我想给出演员的名字,开始日期,结束日期,以及他在那个时期所演的所有电影 因此,我的服务请求是这样的Java 如何在url请求中发送数组,java,web-services,spring,url,spring-mvc,Java,Web Services,Spring,Url,Spring Mvc,我的要求如下: 我想给出演员的名字,开始日期,结束日期,以及他在那个时期所演的所有电影 因此,我的服务请求是这样的 http://localhost:8080/MovieDB/GetJson?name=Actor&startDate=20120101&endDate=20120505 现在,我想改进它。 我想给出一个开始日期、结束日期和不止一个演员的名字,并想看看那个时期所有演员的电影 我不知道我的url应该如何支持这样的事情 我正在使用spring编写一个基于java的w
http://localhost:8080/MovieDB/GetJson?name=Actor&startDate=20120101&endDate=20120505
现在,我想改进它。
我想给出一个开始日期、结束日期和不止一个演员的名字,并想看看那个时期所有演员的电影
我不知道我的url应该如何支持这样的事情
我正在使用spring编写一个基于java的web服务
下面的代码是为了支持一个参与者
@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
或:
或:
无论哪种方式,您的方法签名都需要:
@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.
}
我认为这适合3到4个演员。但如果您想传入100个参与者,也许可以使用POST,然后传入一个javascript对象。对于每个参与者,对象可以有名称-值对。你怎么认为?很抱歉给你一个粗略的答复,但是如果你有1000个大小的数组,那么你就不能把所有的东西都写出来??关于这三种不同的URL编写方法,您是否可以指向“Spring文档”链接?方法一(用逗号分隔)与其他两种不同。在Java应用程序上尝试(服务器端由undertow支持),如果您传递
name=Actor1,Actor2,Actor3
,服务器将不会获得name
参数的数组,而是获得一个字符串:Actor1,Actor2,Actor3
参数。另外两个不同,它们都使用一个值数组提供name
参数:[“Actor1”、“Actor2”、“Actor3”]
。根据,许多其他框架也将方法一视为单个字符串查询参数,而不是使用逗号分隔值的数组,您可以将它们作为列表请求参数接收
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.
}