RESTURI约定-创建资源时的单数或复数名称怎么弄?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (10)
  • 关注 (0)
  • 查看 (186)

我对REST很陌生,我注意到在一些RESTful服务中,它们使用不同的资源URI来更新/获取/删除和创建。如

  • 创建-使用/resources用POST方法(观察复数)在某些地方使用/resources(单数)
  • 更新-使用/resources/123用放法
  • 利用/resources/123用GET方法

我对这个URI命名约定有点困惑。我们应该使用什么复数或单数来创建资源?

提问于
用户回答回答于

从API使用者的角度来看,端点应该是可预测的,所以

理想情况下.

  1. GET /resources应该返回资源列表。
  2. GET /resource应该返回一个400级别的状态代码。
  3. GET /resources/id/{resourceId}应该使用一个资源返回集合。
  4. GET /resource/id/{resourceId}应该返回一个资源对象。
  5. POST /resources应该批处理创建资源。
  6. POST /resource应该创建一个资源。
  7. PUT /resource应该更新资源对象。
  8. PATCH /resource应该只发布更改的属性来更新资源。
  9. PATCH /resources批处理更新资源时,只发布更改的属性。
  10. DELETE /resources应该删除所有资源;只是开玩笑:400状态代码
  11. DELETE /resource/id/{resourceId}

这种方法最灵活,功能最丰富,也是开发时间最长的方法。因此,如果您很匆忙(软件开发总是如此),只需指定端点resource或复数形式resources我更喜欢单数形式,因为它让你可以选择以编程的方式进行反思和评估,因为并非所有的复数形式都以‘s’结尾。

尽管如此,出于任何原因,最常用的实践开发人员选择的是使用复数形式。这是我最终选择的路线,如果您看一下流行的API,比如githubtwitter他们就是这么做的。

决定的一些标准可以是:

  1. 我的时间限制是什么?
  2. 我将允许我的消费者做什么操作?
  3. 请求和结果有效负载是什么样子的?
  4. 我希望能够在代码中使用反射并解析URI吗?

所以这取决于你。不管你做什么都是一致的。

热门问答

腾讯云GPU服务器不能联外网吗?

小爱同学

腾讯云 · 技术支持 (已认证)

推荐
腾讯云GPU服务器可连外网,GPU 云服务器提供和标准CVM 云服务器一致的方便快捷的管理方式。 图片.png GPU云服务器作为CVM云服务器的一类特殊实例,购买、 操作、维护等方式与CVM云服务器一致 图片.png GPU 云服务器(GPU Cloud Computin...... 展开详请

win服务器怎么给文件夹配置755权限?

推荐
下面以腾讯云win服务器(Windows Server 2016 数据中心版 64位中文版)为文件夹配置755权限为例 1.右击【属性】 图片.png 2 .选择【安全】- 【编辑】 图片.png 3. 可对当前文件进行755权限配置 图片.png 要修改某个文件的权...... 展开详请

腾讯云sdk 兼容JDK6?

推荐

如果你说的是https://cloud.tencent.com/document/sdk/Java的话,jdk最低版本是1.7,不支持1.6

android 离线推送 为什么setOfflinePushListener不回调?

嗨喽你好摩羯座
推荐
您好,使用云通信 IM SDK 的通知栏提醒,建议参考:https://cloud.tencent.com/document/product/269/9234 中的描述来操作,通知栏提醒的内容由类 TIMOfflinePushNotification 来定义,可以通过这个类对外...... 展开详请

为什么cmq的topic配置订阅者为queue,向topic发送消息无法到达queue?

是的, 向topic发送消息应该会立即投递到订阅者。您可以检查您配置的队列名称是否正确且是真实存在的队列。如还不能解决您的问题,您可以点击控制台右上角的“工单”,进行问题进一步的排查,腾讯云会有专业的售后24小时为您服务。

脏字过滤只支持 TIMTextElem 消息,对自定义消息无效,请问有接口可以主动检查吗?

学生路人
推荐
您好,脏字检查的内容包括单聊和群组消息(只检查文本消息 TIMTextElem,不支持对自定义消息 TIMCustomElem 的过滤)、群名片、群组资料(群名称、群简介、群公告)用户资料和好友关系链中 bytes 类型的数据(如昵称、好友备注和好友分组等)。目前没有这样的接口喔...... 展开详请

所属标签

扫码关注云+社区