REST API设计指导——译自Microsoft REST API Guidelines(一)
前言
前面我们说了,有章可循,有据可依,有正确的产品流程和规范,我们的工作才不至于产生混乱,团队的工作才能更有成效。我们经常见到,程序开发可能只用了半个月,但是接口的联调却经常需要花费半个月甚至一个月左右。
如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本。那么什么是好的API设计?这里我们不得不提到REST API。
另外,REST API的书籍很多,但是完整完善实践丰富的设计指导并不多见,我们有幸看到了微软团队的作品——Microsoft REST API Guidelines,因此才有了此篇内容。由于公众号文章内容字数有限,接下来我们会将翻译稿拆分并分享出来。翻译的不对之处,请多多指教。
什么是REST API?
Rest不是一种协议,也不是一种文字格式,更不是一种开发框架,它是一种系列的设计约束的集合:无状态性、将超媒体作为应用状态的引擎,这个约束我们统称Fielding约束。也就是说,它是一种软件架构风格、设计风格。它的两大核心理念是资源和表述,这个能加快我们对它的理解,然而REST -- REpresentational State Transfer,英语的直译就是“表现层状态转移”。
简单的来说,在REST API:URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。前面说了,REST 指的是一组架构约束条件和原则。那么满足这些约束条件和原则的应用程序或设计就是 RESTful。
为什么用REST API?
1.前后端分离主要以API为界做接洽的,这样就会有很多的API,API的表现力更强,更加便于理解。
2.REST API没有状态,不管前端是何种状态何种设备下都可以无差别的请求资源。
3.Restful API有直接的规范和原则。
简单的来说,有以下好处:
看到Url就知道可以拿到什么。
看到Http请求方法就知道要做什么。
看到Http状态码就知道干的怎么样了。
Microsoft REST API Guidelines目录
1 Abstract
摘要
2 Table of contents
目录表
3 Introduction
介绍
3.1 Recommended reading
推荐阅读
4 Interpreting the guidelines
解读指导
4.1 Application of the guidelines
应用指导
4.2 Guidelines for existing services and versioning of services
现有服务指南和服务版本化
4.3 Requirements language
要求的语言
4.4 License
许可证
5 Taxonomy
分类
5.1 Errors
错误
5.2 Faults
故障
5.3 Latency
潜在因素
5.4 Time to complete
完成时间
5.5 Long running API faults
长期运行的API故障
6 Client guidance
客户指导
6.1 Ignore rule
忽略规则
6.2 Variable order rule
变量排序规则
6.3 Silent fail rule
无声失效规则
7 Consistency fundamentals
一致性基础
7.1 URL structure
网址结构
7.2 URL length
网址长度
7.3 Canonical identifier
标准标识符
7.4 Supported methods
支持方法
7.5 Standard request headers
标准请求请求头
7.6 Standard response headers
响应请求头
7.7 Custom headers
自定义请求头
7.8 Specifying headers as query parameters
指定头部为查询参数
7.9 PII parameters
PII参数
7.10 Response formats
响应格式
7.11 HTTP Status Codes
HTTP状态码
7.12 Client library optional
可选的客户端库
8 CORS
cors
8.1 Client guidance
客户端指导
8.2 Service guidance
服务指导
9 Collections
集合
9.1 Item keys
项的key
9.2 Serialization
序列化
9.3 Collection URL patterns
集合URL模式
9.4 Big collections
大集合
9.5 Changing collections
修改集合
9.6 Sorting collections
集合排序
9.7 Filtering
过滤
9.8 Pagination
分页
9.9 Compound collection operations
复合集合操作
10 Delta queries
增量查询
10.1 Delta links
增量链接
10.2 Entity representation
实体表示
10.3 Obtaining a delta link
获得增量链接
10.4 Contents of a delta link response
增量链接响应内容
10.5 Using a delta link
使用增量链接
11 JSON standardizations
JSON标准化
11.1 JSON formatting standardization for primitive types
主要类型的JSON格式化标准化
11.2 Guidelines for dates and times
日期和时间指南
11.3 JSON serialization of dates and times
日期和时间的JSON序列化
11.4 Durations
持续时间
11.5 Intervals
间隔
11.6 Repeating intervals
重复间隔
12 Versioning
版本
12.1 Versioning formats
版本格式
12.2 When to version
版本的时间
12.3 Definition of a breaking change
非延续性更改的定义
13 Long running operations
长时间运行的操作
13.1 Resource based long running operations (RELO)
基于资源的长时间运行(RELO)
13.2 Stepwise long running operations
分步运行的长时间操作
13.3 Retention policy for operation results
操作结果保留策略
14 Push notifications via webhooks
通过webhooks推送通知
14.1 Scope
范围
14.2 Principles
原则
14.3 Types of subscriptions
订阅类型
14.4 Call sequences
调用序列
14.5 Verifying subscriptions
验证订阅
14.6 Receiving notifications
接收通知
14.7 Managing subscriptions programmatically
programmatically订阅管理
14.8 Security
安全性
15 Unsupported requests
不支持的请求
15.1 Essential guidance
基本指导
15.2 Feature allow list
特征允许列表
16 Naming guidelines
命名准则
16.1 Approach
途径
16.2 Casing
框架
16.3 Names to avoid
避免的命名
16.4 Forming compound names
规范的复合词
16.5 Identity properties
标识属性
16.6 Date and time properties
日期和时间属性
16.7 Name properties
属性名
16.8 Collections and counts
集合和计数
16.9 Common property names
共同属性命名
17 Appendix
附录
17.1 Sequence diagram notes
时序图注释
REST API设计指导——译自Microsoft REST API Guidelines(一)的更多相关文章
- REST API设计指导——译自Microsoft REST API Guidelines(四)
前言 前面我们说了,如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本.那么什么是好的API设计?这里我们不得不提到REST API. 关于REST API的书籍很多,但是完整 ...
- REST API设计指导——译自Microsoft REST API Guidelines(二)
由于文章内容较长,只能拆开发布.翻译的不对之处,请多多指教. 另外:最近团队在做一些技术何架构的研究,视频教程只能争取周末多录制一点,同时预计在下周我们会展开一次直播活动,内容围绕容器技术这块. 所有 ...
- REST API设计指导——译自Microsoft REST API Guidelines(三)
前面我们说了,如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本.那么什么是好的API设计?这里我们不得不提到REST API. 关于REST API的书籍很多,但是完整完善实 ...
- API设计指南(译)
API的设计在软件系统中的重要性不言而喻,在swift.org上看到一篇“API Design Guidelines”,虽然是就Swift而言,但对于其它语言也有不少可以借鉴的地方,在这里粗略翻译一二 ...
- Web API设计方法论--比较完整的web api 开发过程
为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在Web上维护 ...
- 关于REST API设计的文章整理
1. rest api uri设计的7个准则(1)uri末尾不需要出现斜杠/(2)在uri中使用斜杠/表达层级关系(3)在uri中可以使用连接符-提升可读性(4)在uri中不允许出现下划线字符_(5) ...
- API设计原则
译序 Qt的设计水准在业界很有口碑,一致.易于掌握和强大的API是Qt最著名的优点之一.此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结.虽然Qt用的是C++,但其中设计原则和 ...
- 移动App的REST API设计实践
原文:http://www.jianshu.com/p/23cccb3a90b1 通讯协议 一些只是对服务器数据进行CRUD操作的App,通常采用HTTP协议,为了安全也可以采用HTTPS协议.IM软 ...
- Flink Program Guide (2) -- 综述 (DataStream API编程指导 -- For Java)
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
随机推荐
- jenkins安装配置
一.下载Jenkins 官网地址:https://jenkins.io/,图如下所示,点击下载可下载最新版本. 点击下载之后,我们可以看到下面的图,我这边选择的Jenkins.war 文件. 下面,使 ...
- VMware vsphere client报错问题
今天出现一种情况,搞了很久,重装client都不行,原来很简单,防止再犯. 异常信息:"VirtualInfrastructure.Utils.ClientsXml"的类型 ...
- vue 源码学习三 vue中如何生成虚拟DOM
vm._render 生成虚拟dom 我们知道在挂载过程中, $mount 会调用 vm._update和vm._render 方法,vm._updata是负责把VNode渲染成真正的DOM,vm._ ...
- Go语言基础之包
Go语言基础之包 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的.本文介绍了Go语言中如何定义包.如何导出包的内容及如何导入其他包. Go语言的包(packag ...
- 二分(HDU2289 Cup)
贴代码: 题目意思:已知r水的下半径,R水的上半径,H为圆台高度,V为水的体积,求水的高度,如图: 水的高度一定在0-100,所以在这个区间逐步二分,对每次二分出的水的高度,计算相应的体积,看看计算出 ...
- C# 控制台应用程序中输出彩色字体
using System; class Example { public static void Main() { // Get a string array with the names of Co ...
- Dora.Interception,为.NET Core度身打造的AOP框架 [5]:轻松地实现与其他AOP框架的整合
这里所谓的与第三方AOP框架的整合不是说改变Dora.Interception现有的编程,而是恰好相反,即在不改变现有编程模式下采用第三方AOP框架或者自行实现的拦截机制.虽然我们默认提供基于IL E ...
- 企业IT管理员IE11升级指南【14】—— IE11代理服务器配置
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- Java提高篇(三):内部类和匿名内部类
一,内部类 其实内部类是十分简单的,我们根据其字里行间的意义就可以知道内部类应该是一个类当中的一个类,相当于一个类进行了嵌套,就如同循环的嵌套一般. 内部类有一个特征:内部类当中可以调用外部类当中的属 ...
- WinRAR存在严重的安全漏洞影响5亿用户
WinRAR可能是目前全球用户最多的解压缩软件,近日安全团队发现并公布了WinRAR中存在长达19年的严重安全漏洞,这意味着有可能超过5亿用户面临安全风险. 该漏洞存在于所有WinRAR版本中包含的U ...