rest - 更新资源导致位置更改后的 REST 响应
问题描述
假设我有一个用户资源 ( /users/{username}
) 并且客户端使用PUT来更新用户名。在这种情况下,资源的位置会发生变化(因为用户名是 ID)。
这不是幂等的,因为您不能第二次执行相同的请求并获得相同的结果。这是否意味着我必须改用POST?
另外我不知道用哪个状态码来回复。
201 (created)
似乎不正确,因为资源没有创建,只是更新了。另一方面,您必须将新位置提供给客户。
执行更新导致位置更改的最佳做法是什么?大概是禁止吧?
解决方案
拥有稳定的资源网址是一件好事。如果对资源的例行更改更改了它们的位置,那对于指向这些位置的其他东西也可能是不利的。尤其是在更改之后有 404,而不是 301 或 308 状态代码。
更改资源 URI 的最优雅的方法可能是MOVE
HTTP 方法:
MOVE /user/foo HTTP/1.1
Destination: /user/bar
但是,尽管如此,PUT
最初返回 2xx 代码并且紧跟在 404 之后并不违反PUT
.
尽管第二次请求失败,但在第一次请求后服务器的状态在PUT
第二次请求后仍然相同PUT
。
不需要 2 个相同的幂等 HTTP 请求返回相同的状态。
推荐阅读
- c++ - 格式 Indexed8 的 QImage 假着色
- algorithm - 在文本中查找句子的算法
- python - 使用 python 语言编码时,如何将每次迭代产生的值存储在 FOR 循环中?
- python - TypeError:运行排序函数时无法解压不可迭代的 NoneType 对象
- java - logback 是否支持 JPMS 层/模块的单独日志记录?
- java - 使用 DynamoDBMapper 按列查询 DynamoDB
- java - Java:在 Spring Boot 应用程序中单独重复运行子映射查询
- python - 如何在 python/excel 中将一列排列在另一列之下
- python - 如何从冻结推理图中获取输入形状以进行 tflite 转换
- google-cloud-platform - Terraform:谷歌云。为什么没有组织就不能创建新项目?