Go语言实战流媒体视频网站(3.2)

248 阅读2分钟

API 设计与架构

后端服务

API

  1. REST(Representational Status Transfer) API
  2. REST是一种设计风格,不是任何架构标准
  3. 当今RESTful API通常使用HTTP作为通信协议,JSON作为数据格式

特点

  1. 统一接口(Uniform Interface)<接口要统一风格>

  2. 无状态(Stateless)<我什么时候调用这个API,这个API必须返回是我想要的东西;幂等的>

    幂等的含义:
    在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
    幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。
    
  3. 可缓存(Cacheable)<常用的/读远大于写的数据放在缓存>

  4. 分层(Layered System)<将一个API的service分层很多层,分成很多个服务>

  5. CS模式(Client-server Atchitecture)<client和server都可被替换的>

API设计原则

  1. 以URL(统一资源定位符)风格设计API

  2. 通过不同的method(get、post、put、delete)来区分对资源的crud

  3. 返回码(Status Code)符合HTTP资源描述的规定

设计原则

API设计:用户

  • 创建(注册)用户:URL:/user,Method:post,SC:201/400/500

    201:(已创建)请求成功并且服务器创建了新的资源。
    
  • 用户登录:URL:/user/:username,Method:post, SC:200/400/500

  • 获取用户基本信息:URL:/user/:username,Method:get,SC:200/400/401/403/500

    为什么多加了401和403:
    对用户验证的时候,由于验证不通过而返回的错误码
    401:并没有验证
    403:通过验证,但是不具备操作某一项资源的权限
    
  • 用户注销:URL:/user/:username,Method:delete, SC:204/400/401/403/500

    204:表示请求执行成功,但是没有数据,浏览器不用刷新页面.也不用导向新的页面。
    用户注销后,我们不用返回任何东西,但是要表示确实注销成功了
    

延伸阅读: HTTP的状态码有很多种,主要有1xx(临时响应)、2xx(成功)、3xx(已重定向)、4xx(请求错误)以及5xx(服务器错误)五个大类,每个大类还对应一些具体的分类。

百度百科状态码