有一个 REST API 公开了需要 ID 的 PATCH /resources/{id} 方法。 然而,项目要求意味着更新给定的资源另一个字段,未给出ID。
由于目的是更新资源的特定字段,因此 PATCH 应该是适当的。
其他字段的 PATCH 是否不正确并且不遵循 REST API 的准则?
PATCH /resources?field=X
我应该使用 POST 吗?
API 端点 PATCH /resources/{id} 似乎需要 ID 作为 URL 路径的一部分,这是更新特定资源的正确且标准的方法。如果您想根据另一个字段(例如,field=X)更新资源,则使用 PATCH 方法不是标准的 RESTful 方法。
使用带查询参数的 GET: 您可以使用 GET 请求根据字段值检索资源 ID,然后使用该 ID 发出后续 PATCH 请求。
示例:GET /resources?field=X 以获取资源 ID,然后使用更新后的数据 PATCH /resources/{id}。
使用POST: 如果不支持带有替代字段的PATCH方法,并且您无法事先检索资源ID,则可以使用POST方法根据提供的字段触发更新。
示例:POST /resources?field=X,并在请求正文中包含更新的数据。
但是,需要注意的是,使用 POST 进行更新可能不遵循严格的 RESTful 约定,但当无法使用标准 PATCH 方法时,它仍然是一种有效的方法。