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 命名指南相关推荐

  1. RESTful API 设计指南[转]

    一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. RESTful AP ...

  2. RESTful API 设计指南 (转)

    RESTful API 设计指南 2016-02-23 ImportNew (点击上方公号,可快速关注) 作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2014/0 ...

  3. RESTful API 设计指南

    原文地址:http://www.ruanyifeng.com/blog/2014/05/restful_api.html RESTful API 设计指南 作者: 阮一峰 日期: 2014年5月22日 ...

  4. RESTful API 设计指南(转)

    一.协议 API与用户的通信协议,总是使用HTTPs协议. 二.域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以 ...

  5. Spring Boot 集成 Swagger 生成 RESTful API 文档

    原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...

  6. RESTful API的理解

    技术交流的时候遇到了这样的一个问题,被问及开发中用到的是不是Restful API,我说的是,我们现在用到的不属于完全是Restful API.因为我了解到的Restful API,是 通过具体的UR ...

  7. 我是如何根据豆瓣api来理解Restful API设计的

    1.什么是REST REST全称是Representational State Transfer,表述状态转移的意思.它是在Roy Fielding博士论文首次提出.REST本身没有创造新的技术.组件 ...

  8. Flask restful api与blueprint结合实践

    所需依赖: Flask Flask-RESTful Python2.7 备注:flask-restful不能和flask的render_template模板结合使用,因为restfulapi的设计不是 ...

  9. Python自动化开发 - RESTful API

    本节内容 1.  RESTful 简介 2.  RESTful 设计指南 3.  Django REST Framework 最佳实践 4.  理论拓展与开放平台 5.  API文档化与测试 一  R ...

最新文章

  1. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作
  2. 网络请求UI自动切换框架
  3. oracle数据库计数器,DM 达梦数据库 表的 行计数器(COUNTER)属性
  4. org.apache.hadoop.hive.metastore.api.InvalidObjectException: Role public already exists.
  5. LeetCode 1354. 多次求和构造目标数组(优先队列+逆向思考)
  6. 让IT工作者过度劳累的12个坏习惯
  7. linux开启和使用swap
  8. 几款主流的 Python IDE
  9. 【披着递推皮的动态规划】 山区建小学 题解
  10. 加密和解密盐的使用_码农吐糟面试官:居然问我md5是对称加密还是非对称,故意的吧?...
  11. Leetcode 1653. Minimum Deletions to Make String Balanced [Python]
  12. 【蓝桥杯历年真题合集】蓝桥杯2020初赛
  13. 浅谈角色换装功能--前置篇【骨骼,蒙皮,动作】
  14. 网络工程师十月份免费讲座
  15. 关于怎么学习好一门技术一门语言
  16. Windows通过注册表找出桌面壁纸文件存放路径
  17. CRB开发-列表视图按钮添加
  18. 前端面试题【element ui篇】之一:说一下element ui遇到过的坑
  19. 标准G726音频解码和与H264视频封装为avi
  20. 解决WIN10系统自带便笺无法使用问题

热门文章

  1. 正规券商交易所系统用什么API接口?
  2. 一个2d小游戏c++
  3. samba访问共享提示,NT_STATUS_ACCESS_DENIED listing \*
  4. Skywalking内置Tags
  5. 2023年埃塞俄比亚签证办理攻略
  6. vnc远程控制 如何跨网远程其他电脑
  7. 记录应届程序员的第一次出差
  8. 渗透测试中前端加密如何爆破(详细版)
  9. 判断一个整型数据有几位
  10. 淘之道——商城时代中小卖家生存法则