RESTful URL:“不切实际”的请求,并要求两个请求参数之一

时间:2010-08-24 16:08:33

标签: spring url rest spring-mvc

我有一个RESTful网址,需要offsetprefix请求参数(但不能同时包含两者)。

GET /users?offset=0&count=20
GET /users?prefix=J&count=20

执行此规则的最佳方法是什么? Spring有@RequestParam注释,可选参数的'required'属性,但我想对这两个参数强制执行“或 - 或”规则。我知道我可以在代码中执行此操作,但还有另一种方法吗?

此外,处理“不切实际”请求的正确方法是什么?假设我有1亿用户;以下请求,虽然正确RESTful,但我不想支持:

GET /users <-- Gets all 100 million users, crashes server and browser!

我应该寄回什么?

2 个答案:

答案 0 :(得分:2)

您可以创建两种方法,并使用@RequestMapping的{​​{1}}属性选择其中一种方法:

params

答案 1 :(得分:0)

  • 处理“不切实际”请求的正确方法是什么?

REST的较少实践原则包括要求资源“可被发现”。如果要求您提供包含8亿用户的完整列表,并且您不想提供它,则可以考虑提供以某种方式描述如何过滤集合的页面:例如,XForms文档或包含带有offset / prefix / count字段的FORM元素,或带有适当参数的URI模板

或者您可以发送“413实体太大”错误 - 编辑:不,你不能。对不起,我误读了这段代码的描述

如果您决定沿着发送第一页的路线走下去,我想我会将其作为HTTP重定向发送到/ users?offset = 0&amp; count = 20,以便客户有更好的想法他们已经没有得到完整的集合(如果您的回复包含访问后续页面的链接,甚至更好)