01 跟着GitHub 认识 RESTful API

1-1REST是什么以及它的6个限制

1-2 统一接口的限制

1-3 RESTful API 简介

1-4 RESTful API 设计最佳实践

1-1 REST是什么以及它的6个限制

REST 是什么?

  • 万维网软件架构风格
  • 用来创建网络服务

为何叫 REST?

  • Representational State Transfer
  • Representational:数据的表现形式(JSON\XML…)
  • State: 当前状态或者数据
  • Transfer:数据传输

限制一:客户-服务器(Client-Server)

  • 关注点分离
  • 服务端专注数据存储,提升了简单性
  • 前端专注用户界面,提升了可移植性

限制二:无状态(Stateless)

  • 所有用户会话信息都保存在客户端
  • 每次请求必须包括所有信息,不能依赖上下文信息
  • 服务端不用保存会话信息,提升了简单性、可靠性、可见性

限制三:缓存(Cache)

  • 所有服务端响应都要被标为可缓存或不可缓存
  • 减少前后端交互,提升了性能(缓存的作用)

限制四:统一接口(Uniform Interface)

  • 接口设计尽可能统一通用,提升了简单性、可见性
  • 接口与实现解耦,使前后端可以独立开发迭代

限制五:分层系统(Layered System)

  • 每层只知道相邻的一层,后面隐藏的就不知道了
  • 客户端不知道是和代理还是真是服务器通信
  • 其他层:安全层、负载均衡、缓存层等。

限制六:按需代码(Code-On-Demand 可选)

  • 客户端可以下载运行服务器端传来的代码(比如JS)
  • 通过减少一些功能,简化了客户端。

1-2 统一接口的限制

资源的标识

  • 资源是任何可以命名的事物,比如用户、评论等
  • 每个资源可以通过 URI被唯一地标识(https://api.github.com/users)(https://api.github.com/users/lewis617)

通过表述来操作资源

  • 表述就是 Representation,比如 JSON、XML等
  • 客户端不能直接操作(比如 SQL)服务端资源
  • 客户端应该通过表述(比如 JSON)来操作资源

自描述信息

  • 每个消息(请求或响应)必须提供足够的信息让接收者理解
  • 媒体类型(application/json、application/xml)
  • HTTP方法:GET(查)、POST(增)、DELETE(删)
  • 是否缓存: Cache-Control

超媒体作为应用状态引擎

  • 超媒体:带文字的链接
  • 应用状态:一个网页
  • 引擎:驱动、跳转
  • 合起来:点击链接跳转到另一个网页

1-3 RESTful API 简介

RESTful API 具体什么样子?

  • 基本的URL,如https://api.github.com/users
  • 标准HTTP方法,如GET/POST/PATCH/DELETE
  • 传输的数据媒体类型,如JSON,XML
  • GET/users/12 #获取id为12用户

1-3 RESTful API 设计最佳实践

请求设计规范

  • URI 使用名词,尽量使用复数,如/users
  • URL 是使用嵌套表示关联关系,如/users/12/reoos/5
  • 使用正确的HTTP 方法,如GET/POST/PUT/DELETE
  • 不符合 CRUD 的情况: POST/action/子资源

响应设计规范

  • 查询
  • 分页
  • 字段过滤
  • 状态码
  • 错误处理

安全

  • HTTPS
  • 鉴权
  • 限流
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值