我正在构建一个非常复杂的Web API,但我有点困惑的是创建子资源。
具体来说,考虑游戏,
游戏属于一轮,一轮到一个赛季,一个赛季到比赛。 在它的父上下文之外,每个项目都没有相关性,但无论如何都是资源。
所以我想知道我的url模式应该是什么来创建一个游戏?
//full tree map
PUT /competitions/1/seasons/2/rounds/3/games
//each sub resource has it's own top level, but must be created under
//it's parent
PUT /rounds/3/games
//each sub resource has it's own top level, and we include the parent
//id in the resource body.
PUT /games
我希望将/游戏作为自己的最高级别,因为它会更深入,例如,游戏有统计数据,统计数据有视频,因此完整的树形图可能会变得非常繁重,或许我应该支持这三个?
答案 0 :(得分:2)
一种典型的模式是将顶层设为资源的规范URI,但允许GET脱离整个树。所以:
GET /competitions/1/seasons/2/rounds/3/games
GET /games
GET /games/12
PUT /games
competition=1
season=2
round=3
这样做的支持负担略大一些。你确定它值得吗?
GET /games?competition=1&season=2&round=3
也是合理的。我希望竞赛资源的部分响应将成为该竞赛季节的列表URI。
我建议不要有多个支持PUT,POST,PATCH或DELETE的URI。您的代码将很快成为支持的头痛。