【问题标题】:how to send an array in url request如何在 url 请求中发送数组
【发布时间】:2012-08-09 18:47:27
【问题描述】:

我的要求如下:

我想给出演员姓名、开始日期、结束日期并获取他在那段时间出演的所有电影。

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

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

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

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

我正在使用 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

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

这是执行此操作的好方法还是有标准方法?

谢谢

【问题讨论】:

  • 我认为这对 3 或 4 个演员来说还不错。但是如果你想传入 100 个演员,也许你可以使用 POST 然后传递一个 javascript 对象。该对象可以具有每个参与者的名称-值对。你怎么看?抱歉回复粗略

标签: java web-services spring url spring-mvc


【解决方案1】:

用逗号分隔:

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

【讨论】:

  • 但如果你有 1000 大小的数组,那么你不能把这一切都分开写 na.. ??
  • 是否有关于这 3 种不同的 URL 编写方式的“Spring 文档”链接?
  • 方法一(用逗号分隔)与其他两种不同。在 Java 应用程序(由 undertow 支持的服务器端)上尝试,如果您传递 name=Actor1,Actor2,Actor3,服务器将不会为您的 name 参数获取数组,而是获得一个字符串:Actor1,Actor2,Actor3 参数。另外两个不同,它们都给name 参数一个值数组:["Actor1", "Actor2", "Actor3"]。根据stackoverflow.com/questions/6243051/…,许多其他框架也将方法一视为单个字符串查询参数而不是数组
  • 使用逗号分隔的值,您可以将它们作为 List 请求参数接收
猜你喜欢
  • 2012-07-21
  • 2018-12-14
  • 2017-04-21
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多