【发布时间】:2010-02-05 01:31:47
【问题描述】:
我目前正在通过 http 向在线服务添加一个 REST API,我遇到了一个非常简单的问题,我找不到让我满意的答案:
我主要有 2 个资源:“用户”和“报告”,正如您猜想的那样,报告与用户相关联(只有一个,= 我的数据库中的外键)
无论如何,我有 GET 的这个 url 映射:
-
mywebsite/api/users/{id}: 返回用户和相关信息,如果没有 id 则返回用户列表 -
mywebsite/api/report/{id}:返回报告和相关信息,如果 id 不存在,则返回报告列表
现在我想获取特定用户的报告,我现在的做法是在报告的GET 方法中添加一个可选参数:?username={username},如果存在,我将过滤结果仅返回此用户的报告。
我忍不住想出了点问题...如果我开始做这样的事情,我将让我的方法处理 GET 充满 if/else 寻找丢失的参数...
我想到的其他解决方案是:
- 将报告合并到
mywebsite/api/users/{id}上生成的GET中,但我有很多报告,所以最后它会变得非常糟糕...... - 为这个函数映射另一个 url,但感觉不对...
我刚刚掌握了这个 REST 的东西,我喜欢这个概念,但对这个问题的一点解释真的会帮助我更好地理解它。
谢谢
编辑:
似乎我遇到了 REST 世界中的一个常见问题,我已将我的资源绑定到一个模型。如果您将资源绑定到模型,您最终会遇到聚合属性的问题。 有人在这里描述了这个错误http://jacobian.org/writing/rest-worst-practices/,但我还没有理解如何按照他所说的那样管理它......
仅供参考,我使用的是 django/piston,但无论使用何种语言,这个问题都应该是可以回答的。
【问题讨论】:
标签: language-agnostic http rest