文档章节

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

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:26
字数 456
阅读 2
收藏 0

咱们设计的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/
作者:Guy Levin


来源:架构师之路

本文转载自:http://www.jianshu.com/p/0805a2c672e5

共有 人打赏支持
AllenOR灵感
粉丝 10
博文 2634
码字总数 82983
作品 0
程序员
深入理解什么是RESTful API ?

前言:最近两年很火爆的网络框架Retrofit,使用它的时候,查看文档会告诉你,要求后台的服务器哥们必须符合REST规范给你设计接口,作为安卓开发工程师来说,我就很奇怪了,REST规范到底是啥?...

aweiloveandroid
2017/06/24
0
0
REST风格的一点理解

REST的全称是表述性状态转移,它是一种架构设计风格。状态转移说的是在客户端和服务器端之间转移代表资源状态的表述 REST的主要原则包括:URL表示资源、HTTP方法表示操作。GET/POST/PUT/DELE...

技术小牛人
2017/11/01
0
0
REST风格的原则

一个好的RESTful API,应该具备以下特征: 这个API应该是对浏览器友好的,能够很好地融入Web,而不是与Web格格不入。 浏览器是最常见和最通用的REST客户端。好的RESTful API应该能够使用浏览...

吞吞吐吐的
2017/09/13
0
0
Koa2实战练手(一)------ 学习RESTful API

Koa 是下一代的 Node.js 的 Web 框架。由 Express 团队设计。目的是提供一个更小型、更富有表现力、更可靠的 Web 应用和 API 的开发基础。 随着Nodejs新版本正式支持了async和await特性,Koa...

Jack088
06/12
0
0
REST 风格的 Web 服务入门指南和 (重要)REST关键原则

提醒:想掌握并理解REST风格的Web服务,必须要熟悉HTTP协议,不能光知道GET/POST两种方式.详细请看: http://my.oschina.net/zhaoqian/blog/90315 首先向看一下REST在JavaEE里的规范JAX-RS. Jav...

Zhao-Qian
2012/11/19
0
4

没有更多内容

加载失败,请刷新页面

加载更多

Asus RamPage VI Extreme开不了机

Asus RamPage VI Extreme 的机器突然关机,然后就再也开不了机,没有任何反应。有人说是BIOS问题,可是这个连Bios都进不去的,按后面的刷新Bios、清除CMOS等都没有什么效果,没有任何反应。 ...

openthings
35分钟前
1
0
ubuntu 18.04 desktop 截图快捷键

如图,点击下方的 add shortcut 为这个快捷键命名 输入截图 command gnome-screenshot -a 设置快捷键 常用为 Ctrl - Alt + a 参考 http://os.51cto.com/art/200903/113091_all.htm...

公孙衍
44分钟前
0
0
一个六年Java程序员的从业总结:比起掉发,我更怕掉队

恍然间,发现自己在这个行业里已经摸爬滚打了五、六年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫...

老道士
47分钟前
18
2
Spacemacs快捷键

由于Spacemacs快捷键太多,为方便使用,将常用的快捷键记录在此。 以下快捷键都是在emacs的evil模式下 Buffers操作 创建名称为<buffer-name>的buffer SPC b b <buffer-name> 从已打开的buf...

yxmsw2007
51分钟前
1
0
GO冒泡,二分查找

package mainimport("fmt")func main() {var arr [5]int = [5]int{11,13,9,2,25}maopao(&arr)fmt.Println("arr = ", arr) //[2 9 11 13 25]findIndex := binaryFind(&arr, 0......

汤汤圆圆
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部