相关疑难解决方法(0)

分层RESTful URL设计

我已经仔细阅读了有关此问题,但我仍然没有明确的答案.

我有一个应用程序,并希望构建一个RESTful API来公开信息的子集.我有三个资源:

  1. 用户
  2. 报告
  3. 相片

用户有报告和报告都有照片.报告不能存在于报告之外,报告不能存在于用户之外.

我已根据我的要求设计了以下网址

用户登录,服务器使用令牌进行响应,该令牌在所有API调用的标头中发送

GET example.com/api/
Run Code Online (Sandbox Code Playgroud)

获取用户信息

GET example.com/api/users/{username}
Run Code Online (Sandbox Code Playgroud)

获取所有用户报告

GET example.com/api/users/{username}/reports
Run Code Online (Sandbox Code Playgroud)

获取报告的所有照片

GET example.com/api/users/{username}/reports/{report_id}/photos
Run Code Online (Sandbox Code Playgroud)

添加照片

POST example.com/api/users/{username}/reports/{report_id}/photos
Run Code Online (Sandbox Code Playgroud)

删除照片

DELETE example.com/api/users/{username}/reports/{report_id}/photos/{photo_id}
Run Code Online (Sandbox Code Playgroud)

修改照片说明

PUT example.com/api/users/{username}/reports/{report_id}/photos/{photo_id}
Run Code Online (Sandbox Code Playgroud)

问题

  1. 在URL中添加资源ID(即资源/ ID)是一种好习惯,还是应该将其添加为查询参数?
  2. 这种链接资源的方法,即资源/ id /子资源/ id /等,是否可接受和好,还是应该将我的所有资源放在顶层并使用查询参数指定其位置?

rest web-services

28
推荐指数
2
解决办法
6070
查看次数

RESTful API:什么METHOD/HEADER组合用于仅验证

我希望我的API有一个仅验证请求.例如,如果我有一个URL,例如:

http://api.somesite.com/users/12345
Run Code Online (Sandbox Code Playgroud)

并且用户在客户端上填写一种信息,我最终将PATCH/PUT/POST到该资源.当用户填写表单时,我可能希望定期将部分完整的更新表示发送到服务器,以便我可以显示其输入的实时验证(例如,"已经使用了该用户名","该密码是太短").

没有标准的HTTP METHOD或HEADER似乎允许在同一资源上执行此行为.看来我的选择是:

  1. 创建新的从属资源以进行验证
  2. 使用自定义标头(仅限x-somesite-validation-)和PUT表示我要验证但不保存

api rest web-services

6
推荐指数
1
解决办法
4290
查看次数

标签 统计

rest ×2

web-services ×2

api ×1