在仅获取具有特定值的URL时,以下哪个 URL 更符合RESTful ?items
attribute
GET: /items/attribute/{value}
GET: /items/findByAttribute?attribute={value}
GET: /items?attribute={value}
请记住,GET: /items
返回所有项目。
例子
GET: /shirts/color/FF9900
GET: /shirts/findByColor?color=FF9900
GET: /shirts?color=FF9900
我认为最后一个选项是正确的 ;-)
以下是对其他人的一些评论:
/items/{itemid}/fieldname
.findByAttribute
)。HTTP 方法应该对应于“动作”本身。如果您想支持 HTTP 方法的多个操作,请参阅此答案:如何更新 REST 资源集合。否则我写了一篇关于设计 Web API 的方法的文章。这可能对你有用。请参阅此链接:https : //templth.wordpress.com/2014/12/15/designing-a-web-api/。
希望对你有帮助,蒂埃里
最肯定的是这个
GET: /items?attribute={value}
Run Code Online (Sandbox Code Playgroud)
为什么?
GET: /items/attribute/{value}
错误,因为使用 REST,url 段代表资源,属性不是资源
GET: /items/findByAttribute?attribute={value}
出于同样的原因确实是错误的。findByAttribute 不是资源
使用 url 查询按属性过滤非常好,所以就这样吧。
URI 语义与 REST 无关。询问哪个 URI 更 RESTful 是没有意义的。URI 是否为 REST 取决于客户端如何获取它。如果他正在阅读文档中的 URI 模式并用值填充占位符,那么它就不是 RESTful。如果这对您来说是新闻,我建议您阅读此内容。
考虑到这一点,如果服务器向客户端提供 URI 模板作为查询按该值过滤的集合资源的链接,则所有三个示例都可以是 RESTful,但 3 绝对是最佳选择,因为它遵循更传统的查询语法。我不会使用 2,因为它意味着一个方法调用,而且它看起来太 RPC 不符合我的口味;我也不会使用 1,因为它对于人类来说意味着它将仅返回属性作为资源。
归档时间: |
|
查看次数: |
3118 次 |
最近记录: |