REST
REST是什么
REST是万维网软件架构风格
REST是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
REST适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
REST介绍
REST:Representational State Transfer
- Representational:数据表现形式
- State:当前状态或者数据
- Transfer:数据传输
更多精彩内容,请微信搜索“前端爱好者
“, 戳我 查看 。
REST六个限制
客户端-服务端(Client/Server)
- 关注点分离
- 服务端专注于数据存储,提升了 简单性(让服务端代码更加简单)
- 前端专注于用户界面,提升了 可移植性(方便移植到其他项目)
无状态(Stateless)
- 所有用户会话信息都保存在客户端
- 每次请求必须包含所有信息
- 不能依赖上下文信息
- 服务端不用保存会话信息
- 简单性、可靠性、可见性
缓存(Cache)
- 所有服务端响应都要被标为可缓存或不可缓存
- 减少前后端交互,提升性能
统一接口(Uniform Interface)
- 接口设计尽可能统一通用
- 接口实现解耦,是前后端独立开发
分层系统(Layered System)
- 每层只知道相邻的一层
- 客户端不知道是和代理还是真实服务器通信
- 其他层:安全层、负载均衡、缓存层
按需代码(Code-On-Demand)
- 客户端可以下载运行服务端传来的代码
- 通过减少一些功能,简化客户端
统一接口的限制
统一接口的限制是之前介绍的REST6个限制中"统一接口"的子限制,就是为了告诉我们REST风格的接口应该设计成什么样。
资源的标识
资源是任何可以命名的事务
每个资源可以通过URI被唯一标识
通过表述来操作资源
表述就是Representation
- 客户端不能直接操作服务端资源
- 客户端应该通过表述来操作资源 -- JSON
自描述信息
每个消息必须提供足够的信息让接受者理解
- 媒体类型(application/json)
- HTTP方法:GET、POST
- 是否缓存:Cache-Control
超媒体作为应用状态引擎
- 超媒体:带文字的链接
- 应用状态:一个网页
- 引擎:驱动、跳转
点击链接跳转到另一个网页
RESTful API
RESTful API就是REST风格的API,即rest是一种架构风格,跟编程语言无关,跟平台无关,采用HTTP做传输协议。
RESTful API简介
RESTful API具体什么样子?
- 基本的URI,如 https://api.github.com/users
- 标准HTTP方法,如 GET、POST、PUT、DELETE
- 传输的数据媒体类型,如 JSON、XML
实例
- GET /users 获取user列表
- GET /users/12 查看某个具体的user
- PUT /users/12 更新user 12
- DELETE /users/12 删除user 12
RESTful API设计最佳实践
请求设计规范
- URI使用名词,尽量使用复数,如 /users
- URI使用嵌套表示关联关系,如 /users/12/repos/5
- 使用正确的HTTP方法,如 GET/POST/PUT
- 不符合CRUD的情况:POST/action/子资源
响应设计规范
相应:接口的返回值
- 查询
- 分页
- 字段过滤
- 状态码
- 错误处理
安全规范
- HTTPS
- 鉴权
- 限流
开发者友好
- 文档
- 超媒体
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。