API 要更新一对一关系的端点

API endpoint to update one to one relationship

我有 2 个实体,Post 和 Post状态:

Post (PostId PK, PostStatusId FK, Title, Content)

PostStatus (PostStatusId PK, Name)

A Post 有一个 PostStatus,始终定义为 3 个值之一:

PostStatusId    Name    
1               Approved
2               OnHold
3               Rejected

我为 Posts urls 创建了一个 API 端点,如下所示:

HTTP POST     /posts             > Create new post
HTTP PUT      /posts/{postId}    > Update post 
HTTP DELETE   /posts/{postId}    > Delete post 
HTTP GET      /posts/{postId}    > Get post

将 Post状态更新为以下 3 个值之一的正确 API url 是什么:ApprovedOnHoldRejected.

我有两个选择:

  1. 仅更新​​ Post状态。

  2. 更新 PostStatus 但发送额外的数据,这取决于 PostStatus。

不需要将API返回的资源映射到对应的数据库结构。最好将它们分开,因为这样可以提供更大的灵活性。例如,您将来可能想切换到 NoSQL,然后它可能是包含 Post 和 Post 状态的单个集合。但是API接口应该不会改变。

话虽如此,我会将状态包含到 API 返回的 Post 对象中。然后更新状态只是 PATCH (如果你只想更新状态):

PATCH /posts/{id}
{ status: OnHold }

如果要替换整个资源,则使用 PUT