gpt4 book ai didi

rest - 当 REST POST 提供 ID 时该怎么办?

转载 作者:行者123 更新时间:2023-12-04 15:42:23 30 4
gpt4 key购买 nike

我正在开发一个 JAX-RS API,其中包含一个简单的“Person”表,其中包含“id”和“name”字段,其中“id”与 mysql 数据库中的自动编号相关联。一个典型的用例是发布一个新人。

JSON 消息的 POST {"name":"Bob"}例如,可能会返回 {"id":101,"name":"Bob"} .

如果调用者请求包含标识符的对象的 POST 会怎样?看来我的选择是:

  • 拒绝无效请求
  • 删除请求中的id,继续处理
  • 将 POST 视为 UPSERT(更新失败时,删除 ID 并插入)
  • 尝试使用提供的 ID
  • 创建新记录

    从安全角度来看,最后一个选项似乎很狡猾。如果我使用 mysql,恶意用户可能会在一个请求中将我的自动编号提升到最大值。

    应如何在 REST API 中处理 POST 请求中包含的 id?

    最佳答案

    您绝对应该拒绝所有命中 /users/ 的请求。端点。首先,出于安全原因(在数据库级别),其次这不是客户端生成/建议 ID 的工作。

    因此,答案是拒绝请求无效以及适当的状态代码( 400 )和解释拒绝原因的消息。

    第二个选项是不直观的,即发送和 ID(正如我所写的那样已经是一个坏主意)- 不希望收到它发布的不同 ID。在正文中发送 ID,对 PUT 有意义request 并且它假定对象已经创建/存在 - 这是一个更新。

    第三个选项不是 RESTful - REST 中没有 upsert - POST创造新的资源。第四个选项根本没有意义 - 这不是客户提供 ID 的工作。

    关于rest - 当 REST POST 提供 ID 时该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33452765/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com