RESTful API 命名指南
RESTful API 又叫 Web API, REST 是 representational state transfer 的简写。RESTful API 使用 HTTP 协议的 GET, PUT, POST, PATCH 等操作来定义程序接口。由于这四个操作在 HTTP 协议都有特定的含义,所以我们应该遵循它们的习惯性用法。
- GET 用来查询
- PUT 来修改资源
- POST 用来增加资源或者执行控制命令
- DELETE 用来删除某个资源
- PATCH 用来改变资源的某个属性
在实际应用中由于只改变资源某个属性的情形较少,所以很多情况下会直接使用 PUT 直接修改资源
这些操作都是针对资源 (resource) 的,为了让用户能够直观准确地理解 API 的使用,我们应该遵循以下约定:
资源名称使用小写
所有 API 都会操作某个资源,资源名称应该是小写的复数形式,比如 students。
- 如果是两个单词组成的资源名称,我们使用减号 “-” 来连接这个两个单词,比如 student schools 写作 student-schools。
- 如果是资源的子集则子集放在斜线后
示例
# 查询所有学生
GET /students
# 查询id=996的学生
GET /students/996
# 查询男生
GET /students/male
# 查询年纪15岁男生
GET /students/male?age=15
# 查询学生的学校
GET /student-schools# 增加学生
POST /students
# 修改id=996的学生的信息
PUT /student/996
使用 JSON 来定义 body 信息
比如在增加学生时把学生定义为
{"name": "Tom","gender": "male"."age": 15
}
然后使用 POST 命令来增加资源
POST /students/
使用 POST 来执行控制命令
POST 除了可以用来增加资源,还被用来针对资源执行命令,比如:
# 激活ID=996的名声账号
POST /student/activate/996
上例中 activate 就是控制命令
使用 2xx 表示操作执行成功
这是 W3C 的国际标准: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
比如 200 表示成功,201 表示创建成功等。
使用 4xx 表示操作出现错误
按照 W3C 国际标准应该使用 4xx 返回码表示各种错误,而不应该所有的返回都用 200,然后通过返回消息来找到错误。4xx 码都有特定的含义,比如注明的 404 就表示找不到某个资源。更多的错误码描述可以查看:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
使用 ProblemDetail 来定义返回错误信息
我们看到很多 API 都是自己定义错误信息的返回格式,其实早有错误格式的工业标准,这就是 RFC 7807 使用Problem Detail 来返回错误信息。
这是它的样子:
// For example, an HTTP response carrying JSON problem details:// HTTP/1.1 403 Forbidden
// Content-Type: application/problem+json
// Content-Language: en
{"type": "https://example.com/probs/out-of-credit","title": "You do not have enough credit.","detail": "Your current balance is 30, but that costs 50.","instance": "/account/12345/msgs/abc","balance": 30,"accounts": ["/account/12345","/account/67890"]
}
上面的示例中 type, title, detail, instance 是标准选项,balance下面的信息是自定义选项。几乎每种主流编程语言都有支持这个标准的解决方案。
RESTful API 命名指南相关推荐
- RESTful API 设计指南[转]
一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. RESTful AP ...
- RESTful API 设计指南 (转)
RESTful API 设计指南 2016-02-23 ImportNew (点击上方公号,可快速关注) 作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2014/0 ...
- RESTful API 设计指南
原文地址:http://www.ruanyifeng.com/blog/2014/05/restful_api.html RESTful API 设计指南 作者: 阮一峰 日期: 2014年5月22日 ...
- RESTful API 设计指南(转)
一.协议 API与用户的通信协议,总是使用HTTPs协议. 二.域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以 ...
- Spring Boot 集成 Swagger 生成 RESTful API 文档
原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...
- RESTful API的理解
技术交流的时候遇到了这样的一个问题,被问及开发中用到的是不是Restful API,我说的是,我们现在用到的不属于完全是Restful API.因为我了解到的Restful API,是 通过具体的UR ...
- 我是如何根据豆瓣api来理解Restful API设计的
1.什么是REST REST全称是Representational State Transfer,表述状态转移的意思.它是在Roy Fielding博士论文首次提出.REST本身没有创造新的技术.组件 ...
- Flask restful api与blueprint结合实践
所需依赖: Flask Flask-RESTful Python2.7 备注:flask-restful不能和flask的render_template模板结合使用,因为restfulapi的设计不是 ...
- Python自动化开发 - RESTful API
本节内容 1. RESTful 简介 2. RESTful 设计指南 3. Django REST Framework 最佳实践 4. 理论拓展与开放平台 5. API文档化与测试 一 R ...
最新文章
- mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作
- 网络请求UI自动切换框架
- oracle数据库计数器,DM 达梦数据库 表的 行计数器(COUNTER)属性
- org.apache.hadoop.hive.metastore.api.InvalidObjectException: Role public already exists.
- LeetCode 1354. 多次求和构造目标数组(优先队列+逆向思考)
- 让IT工作者过度劳累的12个坏习惯
- linux开启和使用swap
- 几款主流的 Python IDE
- 【披着递推皮的动态规划】 山区建小学 题解
- 加密和解密盐的使用_码农吐糟面试官:居然问我md5是对称加密还是非对称,故意的吧?...
- Leetcode 1653. Minimum Deletions to Make String Balanced [Python]
- 【蓝桥杯历年真题合集】蓝桥杯2020初赛
- 浅谈角色换装功能--前置篇【骨骼,蒙皮,动作】
- 网络工程师十月份免费讲座
- 关于怎么学习好一门技术一门语言
- Windows通过注册表找出桌面壁纸文件存放路径
- CRB开发-列表视图按钮添加
- 前端面试题【element ui篇】之一:说一下element ui遇到过的坑
- 标准G726音频解码和与H264视频封装为avi
- 解决WIN10系统自带便笺无法使用问题