多对多关系的其余API响应

时间:2019-01-31 12:32:29

标签: entity-framework rest api entity-framework-core

我有以下实体:

Post
  PostId: int [PK]
  Title: string

Tag
  TagId: int [PK]
  Name: int

PostTag
  PostId: int [FK]
  TagId: int [FK]

  PostId + TagId = PK of PostTag

因此PostTag定义了PostTag之间的多对多关系。

我创建了一个API端点/posts,该端点返回帖子列表:

[
  {
    "postId": 1,
    "title": "Title 1",
    "tags": [
      { "tagId": 1, "name": "Tag 1" },
      { "tagId": 2, "name": "Tag 2" }
    ]
  },
  {
    "postId": 2,
    "title": "Title 2",
    "tags": [
      { "tagId": 2, "name": "Tag 2" },
      { "tagId": 3, "name": "Tag 3" }
    ]
  }
]

我没有公开PostTag实体……只有帖子及其标签。

问题

要删除帖子的标签,例如PostTag,我是否应具有以下端点:

HTTP DELETE "posts/{postId}/tags/{tagId}"

并将标签关联到帖子,我会做类似的事情:

HTTP POST "posts/{postId}/tags"

Where the body would contain TagId and Name

这是一个好方法吗?

我看到其他选项:

  1. 在响应中公开PostTag(对用户不友好);
  2. 添加一个PK(PostTagId)做PostTag表,作为响应,TagId将为PostTagId ...
    可能会令人困惑,但是更直接地访问它?

欢迎任何意见...

0 个答案:

没有答案