2014-10-19 62 views
2

如果API仅允许检索数据(通过GET)并且不允许Create,Update或Delete,它仍然是RESTful?如果API仅使用GET/Retrieve,则REST风格的API为

我怀疑这是因为维基百科说:“当一个客户拥有资源的表示,包括附加任何元数据,它有足够的信息来修改或删除该资源。”作为REST的约束。

我很抱歉,如果这似乎是一个愚蠢的问题,但我试图让的地步,我可以说“我理解REST”信心十足。

+0

从GET请求发送到客户端的状态可能确实包含稍后更新该状态所需的所有信息。服务器不需要*允许*更新或公开其功能,但客户端仍然可以保存更改状态所需的信息。 – David 2014-10-19 13:45:29

回答

1

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

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

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

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

2

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

最常见的实现和使用REST是用于万维网(即使RESTfulness实现圣维特不同程度的成功)HTTP 1.1。绝大多数资源是只读的。

1

REST不耦合到任何特定的协议,所以什么方法正在使用不影响API的RESTfulness,只要用于其标准化行为的方法和的任何偏差都记录。例如,没有什么能够阻止你使用RETR方法在FTP上实现类似的“只读”API。

真正重要的是客户端如何获取他们正在检索的资源的URI。如果他们正在使用带外信息,例如文档中的URI模式,则不是RESTFUL。资源应该有链接引用对方,客户端应该能够从初始入口点URI找到他们想要的任何东西。如果您对此有疑问,请为HATEOAS做一些Google搜索。