如果API仅使用GET / Retrieve,则是RESTful

时间:2014-10-19 13:37:02

标签: rest

如果API只允许检索数据(通过GET)并且不允许创建,更新或删除它仍然是RESTful吗?

我对此提出质疑,因为维基百科说“当客户端持有资源的表示,包括附加的任何元数据时,它就有足够的信息来修改或删除资源。”作为REST的约束。

我很抱歉,如果这看起来像是一个愚蠢的问题,但我正试图让我自信地说“我理解REST”。

3 个答案:

答案 0 :(得分:2)

是的,系统可以使用REST,即使它不允许修改资源。

最常见的REST实现和使用是用于万维网的HTTP 1.1(即使实现了RESTfulness,也取得了不同的成功)。绝大多数资源都是只读的。

答案 1 :(得分:1)

我相信即使它没有实现所有动词,API仍然是RESTful。这对所有资源都没有意义。某些动词可能不适用,或者客户可能无权执行这些动词。

以报纸文章为例。我可以看到GET是唯一可用的动词,因为新闻网站可能只发布用于阅读(即获取)文章的API。

至于维基百科的定义,我会稍微改变一下,说“它有足够的信息来尝试修改或删除资源。”

API可以通过响应代码传达对某些动词的支持/不支持。如果不支持DELETE,则客户端DELETE请求将看到HTTP 405(不支持)响应。

答案 2 :(得分:1)

REST未与任何特定协议耦合,因此正在使用的方法不会影响API的RESTful,只要这些方法用于其标准化行为并记录任何偏差。例如,使用RETR方法,没有任何东西阻止您使用FTP实现类似的“只读”API。

真正重要的是客户如何获取他们正在检索的资源的URI。如果他们使用带外信息,比如文档中的URI模式,那就不是RESTFUL了。资源应该具有相互引用的链接,并且客户端应该能够从初始入口点URI开始找到他们想要的任何内容。如果你对此有疑问,请为HATEOAS做一些谷歌搜索。