【发布时间】:2015-01-21 17:18:04
【问题描述】:
我需要在Game 和Site 之间建立一对一的关系——每场比赛都在一个站点中进行。在我的数据库中,site 是 Game 对象的一个属性,它指向一个 Site 对象。
我在互联网上找不到太多关于此的信息,以下是我的想法:
GET /game/<game_id>/site
获取游戏的站点,隐藏站点 ID。
POST /game/<game_id>/site
创建游戏的站点,创建游戏时只使用一次。
PUT /game/<game_id>/site
更新游戏网站
DELETE /game/<game_id>/site
删除游戏网站。
但是如果有人想要获得所有网站的列表怎么办?我是否应该添加一个/sites URI 并让Site 对象的get 方法检测是否传入了game_id?我是否也应该让人们通过/sites/<site_id> 访问网站,还是应该让客户通过遍历所有games 来填充他们自己的sites 列表?最后,我通常对每个对象都有一个“href”属性,该属性是返回自身的链接。如果我采用上述设计(包括/sites/ URI),我是链接到/game/<game_id>/site 还是/sites/<site_id>?是否应该有两个地方可以访问相同的信息?
我在正确的轨道上吗?或者有没有更好的方法在 REST 中为一对一关系建模?
如果重要的话,我正在使用 Flask-RESTful 来制作我的 API。
【问题讨论】:
标签: web-services rest http web