编辑:我目前已经解决了我的问题(至少是暂时的)。
最近我一直在使用Zendesk REST Api,他们使用自定义的“X-On-Behalf-Of”头来查找特定用户打开的票务,这让我想到了Restful Api设计选择(没有特定的语言,更多的是关于如何命名URI的问题)。我还阅读了与自定义HTTP头相关的问题,但它给我留下了更多的问题而不是答案。
假设我有一个处理租赁公寓申请的示例restful web服务,客户端使用Basic Auth(保持简单)进行身份验证。将基本数据定义为:
- 用户(可以是房东或租户类型)
- 表单(由一个或多个文档资源和一些表单元数据组成,例如表单名称和版本信息)
- 然后是某种对应于租赁申请的资源,它将表单、申请人(一个或多个租户)、房东以及一些元数据(如状态和日期)联系在一起。
我正在努力正确地模拟应用程序资源的URI,尤其是在客户端角色方面。 (假设api根为https://api.example.com/)
如何允许房东获取发送给他们的应用程序列表?我的直觉是发出“GET /applications”请求,Basic Auth让服务器知道要为哪个用户构建列表;同样,“GET /applications”由租户请求将返回他们发送的应用程序列表...但我不确定在同一URI中混合匹配发送者与接收者列表是否是一个稳健的设计。我应该以不同的方式考虑“/applications”资源,例如为每个用户允许类似“/applications/[USER_IDENTIFIER]”的层次结构吗?
此外,无论我的应用程序URI设计如何,假设房东能够代表租户创建应用程序。这是否更好地通过发送自定义标题(如“X-Create-On-Behalf-Of: somerenter@example.com”)来完成PUT/POST创建请求?还是我的模式应该定义一个字段,允许这种替代情况。
我非常业余,在这方面我对我的假设/设计持开放态度,并且对于学习有关设计RESTful api的更多指针,我感谢你的阅读。