什么是RESt?RESTFUL API 设计简述及为什么使用它

  • 1. API 是什么?
  • 2. Restful是什么?
  • 2.1 举个微服务架构的例子
  • 3. 方面讲解
  • 4. HTTP常用方法
  • 5. CURD操作
  • 6. `*`规范书写:URL结尾是否应包含斜杠“/”
  • 7. RESTful API关键点(状态码)
  • 结语


1. API 是什么?

API,全名 Application Programming Interface (应用编程接口),简单来说,是服务方开发出的一种接口,让第三方可以额外开发、应用在自身的产品上的系统沟通接口。

  • API 把web app的功能全部封装了,所以,通过API操作数据,可以极大的把前端和后端的代码分离,使得后端代码易于测试,前端代码编写更简单。

2. Restful是什么?

一种架构设计风格,提供了设计原则(接口规范)和约束条件

2.1 举个微服务架构的例子

任务分给三个团队分别用C#、java、python不同的语言实现不同的功能,最后再用网关把这三个swagger整合起来;这里就需要三种语言遵循接口规范,这样前端人员调用接口则可直接在网关通过url进入对应的微服务实现功能。

只要遵循,不管用什么语言,都用Restful规范提供接口、对外统一;前端调用也都是一样的, 而这接口规范也就叫做Restful ,是一种设计风格。

一般的 API,可能会是这样:
获得列表GET    /getcompany
新增短信POST   /createcompany
删除短信DELETE /deletecompany/id

若以 RESTful API 风格开发的话:
获得列表GET     /company
新增短信POST    /company
删除短信DELETE  /company/{id}

rest接口乱码 restful接口介绍_restful

3. 方面讲解

  1. 概念方面:
    数据通信接口,用http协议通信,请求的响应值可以是xml,也可以是json(有些通常是xml,不可以json);
  2. 核心方面:
    基于HTTP上建立的一种接口规范,核心是资源;
  3. 协议方面:
    使用标准HTTP方法(get/put/post/delete)来抽象所有web系统的服务能力。并非个性化接口;
  4. 安全控制方面:
    代理服务器是可以定制安全策略,一般代码代理服务器的是根据(URI,HTTP Method)来决定HTTP请求是不是合法。Delete这个方法我们可以给予拒绝
  5. 缓存方面:
    RESt:刚好使用标准的HTTP方法,所以可以使用get进行缓存。
    SOAP相关:(而所有经过缓存服务器的SOAP消息总是http post,所以缓存服务器如果不解码SOAP消息体的话,根本没法知道这个请求是不是要拦截的,所以也决定了SOAP的缓存机制要比RESt复杂)
  6. 总结:
    REST系统的扩展能力高:统一接口抽象、代理服务器支持、缓存服务器支持等等,并且,伴随着网站引进的趋势,还有rest本身设计实现的简单性和强扩展性,后期极大有可能会成为Web服务的一个重要架构实践。

4. HTTP常用方法

GET:获取资源
POST:新建资源
PUT:在服务器更新资源(向客户端提供更改后的所有资源)
PATCH:在服务器更新资源(向客户端提供更改的属性)
DELETE:删除资源

PUT 是整体更新
Patch是局部更新,一般不用,用PUT

5. CURD操作

简单资源URI:
GET /users -------------获取用户列表
GET /users/1 ----------获取ID为1的用户
POST /users ----------创建一个用户
PUT /users/1 ----------替换ID为1的用户
PATCH /users/1 ------修改ID为1的用户
DELETE /users/1 ----删除Id为1的用户

6. *规范书写:URL结尾是否应包含斜杠“/”

  1. 这是作为URL路径中处理中最重要的规则之一,REST API不允许一个尾部的斜杠。
  2. 许多Web组件和框架将平等对待一下两个url:
    http://api.demo.com/user http://api.demo.com/user/
    但是,实际上URL的每一个字符都会计入资源的唯一身份的识别中。
    两个不同的URL映射到两个不同的资源。
    因此RESTFUL API必须生成和传递精确的URL,不能容忍任何的客户端尝试不精确的URL资源定位。
  3. 用中杠“-”不用下杠“_”,防止看不见导致混淆、提高URL的可读性。
  4. 另外,要注意一点,URL路径对大小写敏感的,例如“/user”与”/User”是两个接口,还是规定url小写比较好。

7. RESTful API关键点(状态码)

1.充分利用了heep语义-动词
2. 状态码
   200:请求成功,返回相应的数据。
   3xx: 请求成功,但需要改变请求资源的方式。(比如会发生资源的永久重定向/单次重定向)
   4xx: 请求有错误,此类错误应由客户端负责。(比如说请求的参数不对或者是权限不足、资源不存在等)
   5xx: 服务器内部错误。(跟你客户端没关系,是我服务器内部发生的问题,比如经常遇到的服务器响应超时)

结语

  1. RESTFUL是一种网络应用程序的设计风格和开发方式,基于Http,可以使用XML格式定义或JSON格式定义。
  2. RESTFUL适用于移送互联网互联网厂商,作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能。
  3. 动作类型为新增、变更、删除所调用的资源;
  4. RESTFUL特点包括:每一个URL代表一种资源,客户端使用GET、POST、PUT、DELETE四个表示操作方式的动词,对服务端资源进行操作。