【发布时间】:2019-12-13 14:41:26
【问题描述】:
我很难找到一个标准,这样的更新会是什么样子。我有这个模型(简化)。请记住,Team 允许没有任何玩家,Team 最多可以有 500 名玩家:
public class Team
{
public int TeamId { get; set; }
public string Name { get; set; }
public string City { get; set; }
public List<Player> Players { get; set; }
}
public class Player
{
public int PlayerId { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
还有这个端点:
部分球队更新(无球员):
[PATCH] /api/teams/{teamId}。为我提供更新球队特定领域的选项,但没有球员。更新团队(包括玩家):
[PUT] /api/teams/{teamId}。在有效载荷数据中,我将json与整个Team对象一起传递,包括玩家集合。单独更新播放器:
[PUT] /api/teams/{teamId}/players/{playerId}
我开始怀疑我是否需要端点 #2。端点 #2 的唯一优势是我可以在一个请求中更新多个玩家。我也可以一次删除或添加许多玩家。所以我开始寻找任何标准,在现实世界中如何处理如此流行的场景?
我有两个选择:
- 保留端点 #2 以便能够同时更新/添加/删除许多子记录。
- 删除端点 #2。仅允许通过
PATCH更改团队,而无法操作Player集合。Player集合只能由端点更改:[POST] /api/teams/{teamId}/players[PUT] /api/teams/{teamId}/players/{playerId}[DELETE] /api/teams/{teamId}/players/{playerId}
哪个选项更好?是否有标准如何处理带有集合情况的实体?
谢谢。
【问题讨论】:
标签: c# rest asp.net-web-api url-routing asp.net-core-webapi