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 是什么:Approved
、OnHold
和 Rejected
.
我有两个选择:
仅更新 Post状态。
更新 PostStatus 但发送额外的数据,这取决于 PostStatus。
不需要将API返回的资源映射到对应的数据库结构。最好将它们分开,因为这样可以提供更大的灵活性。例如,您将来可能想切换到 NoSQL,然后它可能是包含 Post 和 Post 状态的单个集合。但是API接口应该不会改变。
话虽如此,我会将状态包含到 API 返回的 Post
对象中。然后更新状态只是 PATCH
(如果你只想更新状态):
PATCH /posts/{id}
{ status: OnHold }
如果要替换整个资源,则使用 PUT
。
我有 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 是什么:Approved
、OnHold
和 Rejected
.
我有两个选择:
仅更新 Post状态。
更新 PostStatus 但发送额外的数据,这取决于 PostStatus。
不需要将API返回的资源映射到对应的数据库结构。最好将它们分开,因为这样可以提供更大的灵活性。例如,您将来可能想切换到 NoSQL,然后它可能是包含 Post 和 Post 状态的单个集合。但是API接口应该不会改变。
话虽如此,我会将状态包含到 API 返回的 Post
对象中。然后更新状态只是 PATCH
(如果你只想更新状态):
PATCH /posts/{id}
{ status: OnHold }
如果要替换整个资源,则使用 PUT
。