Restful API的流行,很大程度上被当前的移动互联网所影响,在10年前,那个时候的网络应用程序,在跨系统的时候,很多时候采用的是WebService来实现,在当下,Restful的设计已经比交深入人心!特别是你的系统需要对外提供数据或者一些服务的时候,这里的对外,可以是 手机端(比如APP),也可以是PAD,桌面程序,也可以是网络上的一台需要服务的服务器等等 ,这个时候就可以采用Restful 的设计
通常Resutful API 一般走HTTP 协议,为了更安全,我们会加上SSL,也就是 HTTPS ,比如
目前我们的写法是讲API作为我们系统功能的一部分,这种做法没有和 系统剥离,如果条件允许的话,尽量做到API 的域名独立
这里 有一个版本的参数,其实在设计API的实现,很多时候需要兼容底下的版本,所以需要标明版本号
一个对外的地址通常代表一种资源,一般用名词复数。当其他人调用我们的API的时候,我们内部会有相应的动作,这些动作,主要是HTTP协议支持的一些动作 ,主要有下面几个
- GET(SELECT):从服务器取出资源(一项或多项)。
- POST(CREATE):在服务器新建一个资源。
- PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
- PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
- DELETE(DELETE):从服务器删除资源。
一般在动作后面需要参数,比如ID这样的:
Server动作执行完以后,我们需要返回结果,当然了,HTTP协议的状态码表示 请求的结果,这个还是要熟悉的,这个浏览器一般都能够监控渠道这个值 一些常用的状态码:
- 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
- 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
- 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
- 204 NO CONTENT - [DELETE]:用户删除数据成功。
- 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
- 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
- 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
- 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
- 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
- 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
- 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
- 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功
Restful的API,一般流行返回JSON对象,客户端也比交方便解析,尽量不用返回XML,这样比交麻烦 ,除非不得已为之!