2012-08-09 180 views
30

我要求如下:如何在URL请求发送阵列

我想给演员的名字,开始日期,结束日期,让他在那个时期担任了所有的电影。

因此,我的服务请求是这样的。

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

现在,我想改善它。 我想给出一个开始日期,结束日期和多个演员的名字,并希望看到那个时期的所有演员电影。

我不知道我的网址应该如何支持这样的事情。

我正在写一个基于java的web服务使用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 

现在,在控制器中,我将使用%解析名称字符串并取回所有演员的名称。

这是一个很好的方法来做到这一点,或者是否有一个标准的方法?

感谢

+1

我觉得这对3或4位演员来说很好。但是如果你想传递100个演员,也许你可以使用POST,然后传递一个javascript对象。该对象可以具有每个演员的名称 - 值对。你怎么看?对不起,粗略的回复 – Victor 2012-08-09 18:58:03

+0

我不明白你是什么意思,通过使用后。你能指点我一个例子吗?谢谢 – javaMan 2012-08-09 19:28:59

回答

77

用逗号分隔:

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. 
} 
+1

但如果你有1000个大小的数组,那么你不能写这个所有的东西分开呐.. ?? – Krishna 2014-02-11 05:51:56

+4

有没有一个“Spring文档”链接可以指向关于这三种不同的URL编写方式? – TPPZ 2014-07-03 16:14:26

+5

方法一(用逗号分隔)与另外两个不同。如果你通过'name = Actor1,Actor2,Actor3',服务器不会为你的'name'参数获得一个数组,而是你得到一个单一的字符串:'Actor1, Actor2,Actor3'参数。其他两个不同,它们都给'name'参数赋值:'[“Actor1”,“Actor2”,“Actor3”]'。根据http://stackoverflow.com/questions/6243051/how-to-pass-an-array-within-a-query-string,许多其他框架也把方法一作为单个字符串查询参数而不是数组 – 2016-06-19 09:43:25