Rails:JSON还是REST吗?

我对网络开发还很新,所以如果这个问题真的很愚蠢,请耐心等待。

我正在尝试遵循REST原则,但是,我非常感谢JSON如何与Ruby以及通过API从外部连接的任何内容。 我知道它在REST中非常标准直接将参数输入到URL中,如下所示:myurl.com/ExampleModel/MyIDParameter并将JSON(如果有的话)发送到该URI,对吧?

我想知道的是:从URI中删除参数(以及如果我永远不会使用它的路由)是否违反REST原则并将参数包含在JSON中?

例如,而不是调用它:

myurl.com/ExampleModel/id { "name" : "My Name", "anotherParameter" : "A random string" } 

你会这样称呼:

 myurl.com/ExampleModel { "id" : 512, "name" : "My Name", "anotherParameter" : "A random string" } 

首先,免责声明:我不用Ruby编程,所以我无法回答关于Ruby的具体问题。 但我的回答是针对您的REST原则问题。

最后,答案是:这是您的应用程序如何发挥作用的问题。 我将首先解释开发人员使用的常用方法。 我提到了普通而不是黄金法则。

指定myurl.com/ExampleModel/id 。 这种模式的一般含义用于GET或PUT操作。 从某种意义上说,我需要有关ID值id某些对象的信息。 PUT在某种意义上说我有一些请求主体附加了要更新到Data的ID为id的数据存储的请求。

当您提到myurl.com/ExampleModel ,您的第二个URL,一个常见的解释是向我展示ExampleModel集合中的所有记录。 这几乎是编写API的开发人员使用的默认行为。

那么,当你想要做的时候,它是否打破了REST原则,答案是否定的。 但是,如果您将API交给其他人,可能会对它感到困惑。

所以你有它。 现在由您来决定什么是最适合您的应用程序。

如果myurl.com/ExampleModel标识了唯一的资源,则可以将其用作URI。 但我对此表示怀疑。

您的应用程序是否也可以使用不同的资源表示forms?

 { "id" : 513, "name" : "Some Other Name", "anotherParameter" : "A differnet random string" } 

如果是,它的URI是什么?

我建议使用第一个表单来处理这样的资源表示:

 GET http://myurl.com/ExampleModel/513 

注意:您的JSON无效,因为它缺少双引号和逗号。

我不认为数据交换的格式与REST是什么或不是什么有关。

去吧。

REST实际上更像是一个概念,而不是严格设计的协议。 大多数人将REST等同于简单地使用所有HTTP动词在同一个URL上执行不同的操作,并且这种思维方式有一定的有效性。

但是,如果您想了解如何使用REST背后的原始意图来实际制作一个好的API:

http://blog.steveklabnik.com/posts/2011-07-03-nobody-understands-rest-or-http

http://blog.steveklabnik.com/posts/2011-08-07-some-people-understand-rest-and-http

因此,如果您遵循博客中的原则,则通过URL中的ID来引用资源非常重要。 但这是你的API,并没有关于如何完成工作的严格规定,只是关于如何使你的API更容易被发现的建议。