【问题标题】:Is it possible to repeat parameter RESTful Spring MVC?是否可以重复参数 RESTful Spring MVC?
【发布时间】:2012-07-04 11:23:12
【问题描述】:

现在我正在使用 RESTful 在 Spring MVC 中处理一个项目, 我对包含多个相同参数的 URL 有一些问题

我想请求类似:

get/user/{userID}/report/[year/{year}/week/{week},year/{year}/week/{week},....]

并尝试将其解析为带有字符串的列表

有可能吗?

【问题讨论】:

  • 我对使用 Spring 进行 REST 了解不多,所以我对此无能为力,但从该结构看来,将这些重复参数设置为更合适而是查询参数(get/user/{userID}/report?year=x&week=a&year=y&week=b)。您是否考虑过不同的方法?
  • 我可能不明白这里的问题域,但似乎没有必要检查一年以上,除非它有间隔?
  • 我希望能够在同一个请求中获得不同年份数周的状态
  • @Thor84no 为什么这样更合适?是的,您可以根据需要重复参数,但如果它们相同,那有什么意义呢?
  • @NimChimpsky 我不是说它是,这取决于实际细节。一般来说,URI 的主要部分指向你得到的东西,查询参数是一个选择器,所以它在语义上是有意义的。 (我收到报告,选择年/周)。此外,查询参数已经被制作为支持具有相同键的多个值的场景 - 例如,它用于组合框中的多个选择。

标签: java json spring rest spring-mvc


【解决方案1】:

你可以像下面这样使用;

get/user/{userID}/report/[year/{year1}/week/{week1},year/{year2}/week/{week2}

使用每个路径参数一次,但使用逗号等分隔符分隔内部数据,并在您的 java 类中解析它以获取它。这样会更干净,并且可以传递无限的动态数量的相同参数。

get/user/{userID}/report/[year/{year1}/week/{week1}

其中 {year} 是 2000,2001,2002 {week} 是 2,5,6,7

编辑 1:示例代码

比如:

@RequestMapping(value="/test/{tests}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable String tests)
{
     String[] test= tests.split(",");
     return "sth"; 
}

你会通过:

http://localhost:8080/test/1,3,4,50,xxx,yyy,ddd

【讨论】:

  • 没有办法做这样的事情呢? @RequestMapping(value="/get/user/{userID}/report/[year/{year}/week/{week} ", method = RequestMethod.GET)<br> public @ResponseBody String getWeekView( @PathVariable String userId,@PathVariable List<string> 年,@PathVariable List<string> 周){<br>}</string></string>
  • 我不认为有这样的直接解决方案。
猜你喜欢
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2013-02-17
相关资源
最近更新 更多