在某些情况下,我可能需要通过 ID 以外的参数来查找对象。正确的 RESTful 方法是什么?
例如我可能想找到一个User
by username
and password
,所以严格的 RESTful ”GET /users/1
“行不通。
根据Rails 文档 http://guides.rubyonrails.org/routing_outside_in.html#_crud_verbs_and_actions这是获取资源所有实例的 URL 模式:“GET /users
“。我可以添加参数:”GET /users?username=joe&password=topsecret
”,但这会歪曲 GET 请求的官方目的。
“GET /users?username=joe&password=topsecret”,但这会歪曲 GET 请求的正式目的。”
不,它没有歪曲任何东西。这绝对是正确且 RESTful 的方法,也是 http 规范中推荐的检索动态结果的方法。 REST 不关心 URL 中的内容,只关心它是唯一的。该页面的 url 可能是http://3f778a9b8a7c778696e http://3f778a9b8a7c778696e对于所有 REST 架构关心的问题,只要这是到达目标的唯一方法,并且它不会导致其他任何地方。
http 定义了用于返回动态结果的查询字符串协议。考虑到数据库的当前状态,您为应用程序提供的查询字符串应该始终返回相同的结果。然后就会很宁静。 URL 美观与 REST 是完全不同的问题。
根据REST架构,GET请求的规则是它总是返回相同的结果(或者在相当长的时间内保持相同的结果,以便缓存起作用),并且GET没有副作用。 GET 需要是幂等的(始终返回相同的结果,无论调用多少次)并且不会导致系统更改状态。那是it.
当然,您不必使用查询协议。您可以将参数放入正斜杠、分号之间,也可以是 Base64 编码的 GUID。只要遵循这些简单的规则,这完全取决于您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)