我有两个实体Post和PostStatus:
Post (PostId PK, PostStatusId FK, Title, Content)
PostStatus (PostStatusId PK, Name)
Post
有一个PostStatus
,始终定义,并带有以下三个值之一:
PostStatusId Name
1 Approved
2 OnHold
3 Rejected
我为Posts网址创建了一个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
将PostStatus更新为以下三个值之一的正确API网址是:Approved
,OnHold
和Rejected
。
我有2个选择:
仅更新PostStatus。
更新PostStatus,但发送额外的数据,具体取决于PostStatus。
答案 0 :(得分:1)
没有必要映射API返回的资源来对应数据库结构。最好将它们分开,因为它可以为您提供更大的灵活性。例如,您将来可能希望切换到NoSQL,那么它将可能是具有Post和Post状态的单个集合。但是API接口不应更改。
话虽如此,我将把状态包含在API返回的Post
对象中。然后,更新状态仅为PATCH
(如果您只想更新状态):
PATCH /posts/{id}
{ status: OnHold }
或者如果要替换整个资源,请使用PUT
。