一个宁静的API已经为使用GET,POST,放或删除请求方法。 提交的behavaiour和数据完全由URI字符串来确定。 没有查询paramters或交变量。
这是真的 ?
有效期: http://example.com/foo/84
无效 : http://example.com/foo/?value=84
有效期:
$.ajax({
type: 'POST',
url: "http://example.com/foo/84",
success: success,
dataType: dataType
});
无效 :
$.ajax({
type: 'POST',
url: "http://example.com/foo/",
data: 84,
success: success,
dataType: dataType
});
编辑两个答案,到目前为止,并相互矛盾。
话说http://example.com/foo/?value=84
无效不entireley如此。 我的意思是,只要它是一个有效的URL会工作,你就可以通过GET或POST得到的参数。
在另一方面,REST是一种体系结构和它的要求之一是干净的URL(一个不包括与PARAMS“?”),所以这样的网址不被视为像URL休息。
所以,如果你打算建立一个基于REST的应用程序,你应该只使用干净的URL。
编辑:
我从评论见下文你了解什么是REST,所以我会尽力举一个简单的例子一个问题:
- 为了得到你可能会使用数据
http://example.com/foo/84
作为GET请求,并FW知道获得资源富id为84的其余部分。 - 为了发布有关foo的数据,你可以拨打:
http://example.com/foo/84
作为POST请求,现在休息FW知道,因为它的一个POST请求,它会调用该方法负责处理后,不一个用于处理GET - 要删除,与您通话DELETE操作相同的URL,我想你都知道了。
所以,虽然你有相同的URL它真的很重要,如果它是一个GET / POST / PUT / DELETE请求。
在这里进了第三个答案违背了另外两个。
REST风格的URI几乎是一个矛盾。 URI的语义无关休息,这关系到REST是一个URI标识只有一个资源的唯一的事情。 除此之外,一个URI是一个原子标识符,以及其语义是无关紧要的。
休息也没关系,如果URI指向乔Doe的用户资源是:
http://example.com/users/joedoe
要么:
http://example.com/users?username=joedoe
要么:
http://example.com/jif892mfd02-18f2
甚至:
ftp://example.com/users/joedoe.json
没关系! 的URI不需要有RESTful应用程序中任何意义。 人们花那么多时间设计有意义的URI的REST应用,而他们应该有自己的媒体类型有关。 当你点击一个网页的链接,你不关心URI的语义,只在乎你的标签。 同样的事情发生与使用REST API客户端。 媒体类型的文件应说明的链接都可以和他们做什么,通过标签,您只需跟随他们。
如果您担心与URI的语义,这是你的客户从一些模板文件中的URI建设的标志,而你没有使用HATEOAS,这意味着你没有做REST的。
POST变量是绝对OK,否则你会如何提交新资源或更新呢?
GET参数都很好指定资源应该如何呈现。 因此,我们确实http://example.com/foo/?value=84
是不正确的-该URL不代表资源。
然而, http://example.com/user/84?fields=first_name,last_name
将是确定。 在这种情况下,你可以使用额外的查询参数指定您只想要该资源的姓氏和名字。