REST创建没有持续

现在我有一个REST服务,它通过POST创建一个报告:

POST http://myhost/reports

然而,报告中没有坚持,而不能在以后上通过GET检索:

GET http://myhost/reports/{id}

相反,我立即在POST的响应中返回报告。 我在这里违反了任何REST原则吗?例如,POST创建的任何东西都应该可以通过GET访问,或者该设置是否正常?


不,你没有违反REST。 只要你的界面是统一的,你可以决定你的API的URL执行什么操作。

作为文档的一部分,您只需说明哪些方法对某些资源有效,哪些不适用。 我非常喜欢使用Twitter API作为“做什么”的一个很好的例子

示例:Twitter REST API

POST statuses/update

不会创建可供访问的对象

GET statuses/update/3

POST方法不是CRUD中创建的同义词。 POST方法用于任何不标准化的操作,只要你记录它的作用,不管你做什么,你都没有违反REST。

没有这样的REST原则说“POST创建的任何东西总是可以通过GET访问”。 由于将REST与CRUD相混淆,这是一个常见的误解。 阅读这个答案对此做一些澄清。

在非正式语言中,POST对服务器说的是:“接收这些数据并将其应用于由给定URI标识的资源,遵循您为资源媒体类型记录的规则。”


POST方法执行的操作可能不会导致可以通过URI标识的资源。 在这种情况下,200(OK)或204(无内容)是适当的响应状态,具体取决于响应是否包含描述结果的实体。

所以根据HTTP标准,这是可以的。

链接地址: http://www.djcxy.com/p/71265.html

上一篇: REST creation without persisting

下一篇: Best practice for URI pattern for REST api and UI web pages