REST API

What 什么是REST

表述性状态转移。一种web 服务的架构风格

Who 谁发明的REST

roy fielding 于2000年写的论文

核心

  • 资源
  • 统一接口
  • 状态转移

REST成熟度模型

  • http
  • 表示抽象的资源
  • 用http动词来表述对资源的增删改查

REST的问题

  • 如何聚合多个接口返回的内容
  • 浏览api如何能像浏览网页那样

资源表述

  • 用名词来表述资源,用http方法来表述CRUD
  • url 小写
  • 什么时候使用下划线,什么时候用连字符?
  • 资源的名词用复数表示
  • 表述关联关系,可以有多级,例如:/user/1/address/1
  • 当无法用http方法来表述谓词的时候,可以这样:
  • /products/actions/up
  • /price_calc?schedule_id={}
  • /repo/fock
  • 用过滤器来表示复杂的查询,例如/users?limit=10
  • 多个单词的名词,用破折线分割表示路径,用下划线分割表示属性

request

  • 请求的header中加入request-id,用于定位请求日志
  • 请求的header中指定需要返回的内容格式
  • 尽可能用json表示请求体的内容,因为有类型信息,且支持嵌套

response

  • 用http状态码表示请求的成功失败
  • 请求失败,返回易于机器读的错误码和易于人读的错误信息
  • 资源新建成功,同时返回新建的资源
  • 用UTC,ISO8601 格式化时间yyyy-MM-ddTHH:mm:ssZ

缓存

  1. http cache-control
  2. http conditional request
    2.1 ETag
    2.2 Last_Modified
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容