RESTful API
REST基本概念
REST,表示性状态转移(representation state transfer)。
简单来说,就是用URI表示资源,用HTTP方法(GET, POST, PUT, DELETE)表征对这些资源的操作。
- Resource(资源):即数据,存在互联网上的可被访问的实体。URI(Uniform Resource Identifier)的全称就是统一资源标识符,和我们这里的资源一个意思。一个资源可以是一段文字、一张图片、一段音频、一个服务。
- 表现层(Representation): “资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层”(Representation)。比如一篇文章,可以使用XML、JSON、HTML的形式呈现出来。
- 状态转移(State Transfer):访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。互联网通信协议HTTP协议,是一个无状态协议,这意味着所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
RESTful架构的主要原则:
- 对网络上所有的资源都有一个资源标志符。
- 对资源的操作不会改变标识符。
- 同一资源有多种表现形式(xml、json)
- 所有操作都是无状态的(Stateless)
上面我们介绍了REST的基本概念,那么服务REST 规范的设计,我们就可以称为 RESTful。
RESTful API 就是REST风格的API。
REST资源操作
HTTP | CRUD | 路径 | 表述 |
---|---|---|---|
GET | Retrieve(查) | /shops | 获取所有店铺信息 |
GET | Retrieve(查) | /shops/ID | 获取指定店铺信息 |
GET | Retrieve(查) | /shops/ID/products | 获取指定店铺中所有商品信息 |
POST | Create(增) | /shops | 新建一个店铺 |
PUT | Update(改) | /shops/ID | 更新指定店铺的全部信息 |
PATCH | Update(改) | /shops/ID | 更新指定店铺的局部信息 |
DELETE | Delete(删) | /shops/ID | 删除某个店铺 |
RESTful 中根据操作资源的不同,使用不同的http方法,其传输的媒介一般使用json。
无论是面试或者工作中,总会听到别人问到关于Restful风格API的问题,其实,它并不是我们想象中的那么高深莫测,它只是一种设置API架构风格,而不是一种新的技术,遵循这种风格设计的API就被称为Restful API。
RESTful是否好用:
- 好用:面向对象(资源),如增删改查操作
- 不好用:面向过程,如登录操作
状态码
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,HTTP状态码共分为5种类型:
分类 | 描述 |
---|---|
1xx | 信息,服务器收到请求,需要请求者继续执行操作 |
2xx | 成功,操作被成功接收并处理 |
3xx | 重定向,需要进一步的操作以完成请求 |
4xx | 客户端错误,请求包含语法错误或无法完成请求 |
5xx | 服务器错误,服务器在处理请求的过程中发生了错误 |