如果我有一个对象,比如说Employee,我想提供两种不同的更新方式 - 更新性能评级或更新联系信息.
什么是构建API的REST-ful方式?我假设正确的方法是POST.
我担心的是,对于用户来说,首先获取对象的两个部分(性能评级和联系信息),仅更新一个部分以及POST整个更新的对象似乎是不优雅的.
另一个问题是发送一个只填充了某些字段的对象似乎不太优雅,因为对象的模式要求所有字段都完整,而省略字段只是为了支持POST.I. e.它需要单独的模式来支持操作或没有模式 - 似乎都没有.
同样,使用标志来更新哪些字段也需要一个不同的模式来执行操作.
提供单独的方法并不适合任何明显的方式进入名词 - 动词范式.
如果需要处理此类案例,REST API应该如何显示?REST名词和应用程序实体之间是否需要多对一映射?如果是这样,我们是否为表示应用程序实体子集的视图实体限制PUT?
我不是在寻找黑客或不优雅的方式.我正在寻找REST理念认为正确的解决方案.提前致谢!
我不确定这是否会消除您的担忧,但是看到评级和信息也是资源,我会制作这样的 API(感谢 taylonr 提供的模板:)
url/employees/{id}/[rating|info]
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以获取所有员工的代表、具有特定 ID 的员工、具有特定 ID 的员工的绩效评级以及具有特定 ID 的员工的联系信息。
使用初始化的联系信息和绩效评级创建新员工
POST url/employees { "id": "johnsmith", "rating": 4, "info": ["address": "street 1 a 1" , "email": "johns.old@mail.com"] }
Run Code Online (Sandbox Code Playgroud)
更新 2 将适用于不同的 POST
PUT url/employees/johnsmith/rating { "rating": 5 }
PUT url/employees/johnsmith/info { "email": "john.smith@company.com" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |