如何构建具有多个GET约束的restful路径?

Fle*_*ore 1 rest routes ruby-on-rails

假设您正在使用API​​,并且您想要很好的URL.例如,您希望提供基于作者查询文章的功能,可能还包括排序.

标准:

GET http://example.com/articles.php?author=5&sort=desc
Run Code Online (Sandbox Code Playgroud)

我想这样做的RESTful方式可能是:

GET http://example.com/articles/all/author/5/sort/desc
Run Code Online (Sandbox Code Playgroud)

我对么?或者我有这个REST的东西都错了吗?

Dar*_*ler 7

我担心你的问题确实错过了REST的重点.从纯粹的理论角度来看,从REST角度来看,这些网址中没有任何优势或劣势.在实践中,这些URL可能在不同的缓存中表现不同,当然服务器框架将以不同的方式解析它们.尽管您从框架开发人员那里听到了什么,但没有RESTful URL这样的东西.

从REST的角度来看,这两个URL只是可以解除引用的标识符.如果您想开始构建将受益于论文中描述的特性的REST api,您需要开始考虑在取消引用URL时返回的内容以及如何使用内容中嵌入的URL将内容链接在一起.

我意识到这并没有帮助你解决你认为是你的问题.我可以告诉你的是,REST的一个主要目的是允许你的URL完全在服务器的控制之下,并且可以在不影响你的客户端应用程序的情况下进行更改.因此,我的建议是使用您用于提供资源表示的框架来选择任何url结构.当然不要期待REST论文告诉你格式化URL的正确和错误方式,以及任何告诉你URL不是RESTful的人都会感到困惑.可能他们告诉你的是服务器框架,它们习惯于用于创建RESTful接口,需要以这种方式构造URL.

重要的不是你的URI看起来像什么,重要的是你用它做的事情.