Vis*_*ean 2 rest http-post http-status-codes asp.net-web-api
我有一个 RESTful API,可以在其中添加GET节点和Post节点 - 基本的东西。
我的“问题”是这样的:
当用户发布新节点时,该节点已经存在。我应该回来吗
400 bad request409 conflict200 and the existing node我倾向于 200 并返回现有节点。但是如果您愿意的话,409 然后让用户自己获取正确的节点似乎更“正确”。
对于 RESTful api 来说,在这个问题上的“最佳实践”是什么?
POST 的预期结果是创建新资源以及 201 CREATED 状态代码。返回 200 OK 是不合适的,因为请求未成功。另请参阅 RFC:
请求成功。响应返回的信息取决于请求中使用的方法,例如:
GET 在响应中发送与所请求资源相对应的实体;
HEAD 与所请求资源相对应的实体头字段在响应中发送,不带任何消息主体;
POST描述或包含操作结果的实体;
请求有问题吗?不。所以 400 BAD REQUEST 也不太合适。
由于与资源的当前状态冲突,请求无法完成。仅在预期用户能够解决冲突并重新提交请求的情况下才允许使用此代码。响应正文应该包含足够的
用户能够解决冲突吗?应该是。例如,如果由于用户名已被占用而发生冲突,您可以将其作为错误消息返回给用户,以便他可以选择另一个用户名,从而解决冲突。
我会选择409。
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |