我正在设计REST。我有用户和用户有不同类型的联系人。根据REST,我的端点应该是什么样的?
这看起来很合理:
GET /users/:id/contacts
GET /contacts
在用户端点上,我检查其他用户和联系人端点的联系人我检查联系人中的登录用户,但如果我需要获取所有用户的所有联系人,我需要制作过滤器:
GET /contacts?user_id=:id
并使此端点返回所有联系人。这使得用户端点变得多余。
根据REST执行此操作的正确方法是什么?
答案 0 :(得分:4)
根据REST,我的端点应该是什么样的? [...]根据REST做什么是正确的方法?
这是误解。
REST架构不强制执行任何URI设计(请参阅下面的注释)。完全取决于您选择更好地识别资源的URI。
URI语法在RFC 3986中定义。作为一般规则,路径以分层形式组织(段由/
分隔)并且可以在查询组件中包含非分层数据(从?
开始)。
所以/users/{id}/contacts
似乎可以识别属于特定用户的联系人集合。
注1:在Roy T. Fielding的论文的chapter 5中描述了REST架构风格,它定义了一组必须遵循的应用程序约束遵循这样的架构。但它没有说明URI必须是什么样的。
注2:由Martin Fowler撰写的popular article的示例解释由Leonard Richardson定义的模型建议一种看似友好且易于阅读的URI结构。