REST创建没有持久化

时间:2014-05-22 19:30:21

标签: rest post get

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

POST http://myhost/reports

然而,报告保持不变,之后

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

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

3 个答案:

答案 0 :(得分:0)

不,你没有违反REST。只要您的界面是统一的,您就可以确定API的网址执行的操作。

作为文档的一部分,您只需说明哪些方法对某些资源有效,哪些方法不适用。我真的很想使用Twitter API作为"做什么"

的一个很好的例子

示例:Twitter REST API

POST statuses/update

不会在

处创建可供访问的对象
GET statuses/update/3

答案 1 :(得分:0)

POST方法不是CRUD中创建的同义词。 POST方法用于任何非标准化的操作,因此只要您记录它的作用,无论您做什么,都不会违反REST。

没有这样的REST原则说“POST创建的任何内容都应该始终可以通过GET访问”。由于将REST与CRUD混合,这是一种常见的误解。请阅读this answer以获得一些澄清。

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

答案 2 :(得分:0)

  

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

所以根据HTTP标准,这没关系。