现在我有一个REST服务,它通过POST创建一个报告:
POST http://myhost/reports
然而,报告不保持不变,之后
GET http://myhost/reports/{id}
相反,我会在POST的响应中立即返回报告。我在这里违反任何REST原则,例如应该始终可以通过GET访问POST创建的任何内容,或者此设置是否正常?
答案 0 :(得分:0)
不,你没有违反REST。只要您的界面是统一的,您就可以确定API的网址执行的操作。
作为文档的一部分,您只需说明哪些方法对某些资源有效,哪些方法不适用。我真的很想使用Twitter 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标准,这没关系。