REST 与 RESTful API

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被唯一标识

    • https://api.github.com/users
    • https://api.github.com/users/123

通过表述来操作资源

表述就是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
  • 鉴权
  • 限流

开发者友好

  • 文档
  • 超媒体

猜你喜欢

转载自blog.csdn.net/BradenHan/article/details/130838673