pha*_*ers 6 rest jax-rs autonumber
我正在开发一个JAX-RS API,其中包括带有字段“ id”和“ name”的简单“ Person”表,其中“ id”绑定到mysql数据库中的自动编号。一个典型的用例是发布一个新人。
JSON消息的POST {"name":"Bob"}可能会返回,例如{"id":101,"name":"Bob"}。
如果调用方请求对包含标识符的对象进行POST,该怎么办?看来我的选择是:
从安全的角度来看,最后一个选项似乎很狡猾。如果我使用的是mysql,则恶意用户可能会在一个请求中将我的自动编号提高到最大值。
如何在REST API中处理在POST请求中包含ID的问题?
您绝对应该拒绝所有到达/users/端点的请求。首先,出于安全原因(在数据库级别),其次这不是客户端生成/建议 ID 的工作。
因此,答案是将请求作为无效的请求连同适当的状态代码 ( 400) 和解释拒绝原因的消息一起拒绝。
第二个选项是不直观的,即发送和 ID(正如我所写的那样已经是一个坏主意)- 不希望收到它发布的不同 ID。在正文中发送 ID,对于PUT请求是有意义的,并且它假定对象已经创建/存在 - 这是一个更新。
第三个选项不是 RESTful - REST 中没有 upsert -POST创建新资源。第四个选项根本没有意义 - 这不是客户提供 ID 的工作。
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |