Rest 没有';不要创建资源
假设系统管理用户。用户通过以下URL公开-Rest 没有';不要创建资源,rest,http,Rest,Http,假设系统管理用户。用户通过以下URL公开-/Users。特定用户通过以下URL公开-/users/{id}。用户通过以下URL公开报告-/Users/{id}/reports 一个操作包括生成报告。适当的HTTP请求是/users/{id}/reports上的POST。但是,在某些条件下,生成的报告将与上次生成的报告完全相同。因此,我认为在本例中返回最后生成的报告是一个好方法 我也知道,在这种情况下,不会创建任何资源 有没有正确的RESTful方法来处理这个案件?可能会返回一个特殊代码?如果报告
/Users
。特定用户通过以下URL公开-/users/{id}
。用户通过以下URL公开报告-/Users/{id}/reports
一个操作包括生成报告。适当的HTTP请求是/users/{id}/reports
上的POST
。但是,在某些条件下,生成的报告将与上次生成的报告完全相同。因此,我认为在本例中返回最后生成的报告是一个好方法
我也知道,在这种情况下,不会创建任何资源
有没有正确的RESTful方法来处理这个案件?可能会返回一个特殊代码?如果报告没有修改,我会使用304 Not Modified。这应该告诉大家,自上次导出以来,ressource没有更改,通常不会传输更多内容。如果缓存旧的结果,也可以将其用于引用旧的结果。通常304不用于post,但是使用post触发日志创建也可以被认为有点异国情调 如果客户端执行了条件GET请求,并且允许访问,但文档尚未修改,则服务器应使用此状态代码进行响应。304响应不能包含消息体,因此总是由头字段后的第一个空行终止
如果创建成功,我会发送一个201 created,并使用location头作为指向新文件的指针。如果报告未修改,我会使用304 Not Modified。这应该告诉大家,自上次导出以来,ressource没有更改,通常不会传输更多内容。如果缓存旧的结果,也可以将其用于引用旧的结果。通常304不用于post,但是使用post触发日志创建也可以被认为有点异国情调 如果客户端执行了条件GET请求,并且允许访问,但文档尚未修改,则服务器应使用此状态代码进行响应。304响应不能包含消息体,因此总是由头字段后的第一个空行终止 如果创建成功,我会发送一个201 created,并使用location头作为指向新文件的指针 有没有正确的RESTful方法来处理这个案件?也许会返回一个特殊的代码 退一步:处理“创建”用例的一种非常直接的方法如下
这种模式通常被称为304,但在这里并不合适。见:304在这里不合适。见:
HTTP/1.1 201 Created
Location: /users/1/reports/a
Content-Location: /users/1/reports/a
...
<representation of the report goes here>
HTTP/1.1 200 OK
Content-Location: /users/1/reports/a
...
<representation of the report goes here>
HTTP/1.1 303 See Other
Location: /users/1/reports/a
...