专栏首页架构师之路URI设计原则,你设计的API做到了么?

URI设计原则,你设计的API做到了么?

咱们设计的REST API真的nice么?

优雅型:http://api.exapmle.com/louvre/da-vinci/mona-lisa

卢浮宫/达芬奇/蒙娜丽莎

中庸型:http://58.com/bj/ershou/310976

北京/二手频道/帖子ID

谢特型:http://api.example.com/68dd0-a9d3-11e0-9f1c

不知道什么鬼

本文将分享URI设计的一些原则。

1. URI的末尾不要添加“/”

多一个斜杠,语义完全不同,究竟是目录,还是资源,还是不确定而多做一次301跳转?

负面case:http://api.canvas.com/shapes/

正面case:http://api.canvas.com/shapes

2. 使用“-”提高URI的可读性

目的是使得URI便于理解,用“-”来连接单词

正面case:http://api.example.com/blogs/my-first-post

3. 禁止在URL中使用“_”

目的是提高可读性,“_”可能被文本查看器中的下划线特效遮蔽

负面case:http://api.example.com/blogs/my_first_post

别争,看到效果就明白了

4. 禁止使用大写字母

RFC 3986中规定URI区分大小写,但别用大写字母来为难程序员了,既不美观,又麻烦

负面case:http://api.example.com/My-Folder/My-Doc

正面case:http://api.example.com/my-folder/my-doc

5. 不要在URI中包含扩展名

应鼓励REST API客户端使用HTTP提供的格式选择机制Accept request header

正面case:http://58.com/bj/ershou/310976

一个case:http://58.com/bj/ershou/310976x.shtml

6. 建议URI中的名称使用复数

额,楼主不知道为何会有这么奇怪的建议

正面case:http://api.college.com/students/3248234/courses

负面case:http://api.college.com/student/3248234/course

最后,给后端研发工程师一个建议:清晰优雅的 RESTful API是为调用者编写的,别无脑随意定义一些shit一样的URI给移动/前端工程师使用,小心生命有危险。

原文:http://blog.restcase.com/7-rules-for-rest-api-uri-design/

本文分享自微信公众号 - 架构师之路(road5858),作者:58沈剑

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何设计,容易挨揍的URI???

    后端工程师,如何无脑设计一些shi一样的URI,来恶心移动/前端工程师呢? 希望本文能给大家一些启示。 方法一:搞一些不知所谓的名称。 例如: http:/...

    架构师之路
  • 1分钟了解比特币,PM都懂了

    理解本文不需要任何技术背景。 一句话,比特币BTC(BitCoin)是,基于区块链的,能抵抗通货膨胀的,电子货币。这里有三个关键词:电子货币,抵抗通胀,基于区块...

    架构师之路
  • webim如何用轮询保证消息绝对实时

    webim如何使用http长轮询保证消息的绝对实时性 一、webim如何实现消息推送 webim通常有三种方式实现推送通道: 1)WebSocket 2)Fla...

    架构师之路
  • 黄文俊:Serverless小程序后端技术分享

    今天讲的是怎么使用Serverless做后端技术分享。我的职业偏向是后端,可能不是写前端,不是使用Node.js,更多是使用CR做后端语言,今天关注的微信小程序...

    云加社区技术沙龙
  • 【V课堂】数据挖掘知识脉络与资源整理(二)R语言

    简介: R是用于统计分析与绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R是一套完整的...

    小莹莹
  • Reading Club | 算法和人生抉择:午饭到底吃什么?

    大数据文摘
  • SVN增量打包发布步骤

    1.      在svn根目录下show_log进入到日志目录: ? 2.      全选中当前发布版本到上次发布版本如2052-1972: ? 3.     ...

    NateHuang
  • idea使用Dubbo创建提供者消费者(7)

    订单服务web模块一般指的是对外HTTP服务,用户服务service模块一般指的是对外提供RPC服务

    桑鱼
  • 2017最佳数据科学平台

    我们对比了Gartner2017年数据科学平台魔力象限和它2016年的版本在“领头羊”(Leaders)和“黑马”(Challengers)中的明显改变,其中包...

    华章科技
  • Java微信开发_Exception_01_The type org.xmlpull.v1.XmlPullParser cannot be resolved. It is indirectly ref

    这个异常是在做微信开发时出现的,在引入了XStream的jar包之后,还是出现了如下错误信息:

    shirayner

扫码关注云+社区

领取腾讯云代金券