dev*_*v'd 9 api rest post yaml webdav
我正在使用swagger编写一个YAML文档来设计用于克隆资源的RESTful API方法.我有几个选择,不知道哪个最好.有人可以建议吗?
选项:
谢谢你的帮助!
Jas*_*ers 11
大多数这些选择都是非常好的选择.很多只是你的风格选择到底.以下是我对每个选项的评论.
放弃将资源对象克隆到消费者的责任
通常我对此解决方案没有任何问题.该选项对于用户理解和实施非常简单.它可能比提出一些用户必须学习如何使用的专有克隆功能更好.
使用提供COPY方法的WebDAV HTTP扩展
我也喜欢使用标准方法.我不会用COPY
,但如果你这样做,我不会感到震惊.
POST到/ {resource}?resourceIdToClone = {id}
这是一个非常好的解决方案.从REST的角度来看,您与其他API实际上并没有冲突.带有查询参数的URI标识与不带查询参数的URI不同的资源.查询参数是一个URI功能,用于标识无法分层引用的资源.但是,由于大多数REST框架的工作方式,可能很难在代码中分离这些内容.您可以执行与此类似的操作,除了使用分层URI,例如/{resource}/clone
.您可以POST到此URI并传递resource_source_id
正文.
添加名为"CloneableResource"的新资源并对/ CloneableResource/{resource_type}/{resource_source_id}执行POST
这种方法从REST的角度来看没有任何问题,但我认为添加新类型既不必要又混乱了API.但是,我不同意你的直觉,拥有一个只有POST操作的资源可能会有问题.它发生了.在现实世界中,并非所有东西都适合GET,PUT或DELETE.
对/ resource/{id}进行GET?方法=克隆
这是我唯一不能容忍的选项.从你的描述看来,你已经明白为什么这是一个坏主意,所以我不确定你为什么要考虑它.但是,要使其成为一个好的解决方案,您所要做的就是将GET更改为POST.然后它变得非常类似于#3解决方案.URI也可以是分层的,而不是使用查询参数. POST /resource/{id}/clone
也会起作用.
我希望这可以帮到你.祝你的决定好运.
受项目要求和团队成员偏好范围的影响,选项 1 在现阶段最适合我们。
归档时间: |
|
查看次数: |
7046 次 |
最近记录: |