子资源的API设计?

时间:2013-08-13 10:04:52

标签: api http rest

我正在构建一个非常复杂的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

我希望将/游戏作为自己的最高级别,因为它会更深入,例如,游戏有统计数据,统计数据有视频,因此完整的树形图可能会变得非常繁重,或许我应该支持这三个?

1 个答案:

答案 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。您的代码将很快成为支持的头痛。