码农后生

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

RESTFUL

  • REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。
  • REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
  • RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
      1.网络上的所有事物都被抽象为资源
      2.每个资源都有一个唯一的资源标识符
      3.同一个资源具有多种表现形式(xml,json等)
      4.对资源的各种操作不会改变资源标识符
      5.所有的操作都是无状态的

资源和URL

  • 任何事物,只要有被引用到的必要,它就是一个资源。资源可以是实体(例如手机号码),也可以只是一个抽象概念(例如价值) 。
  • URL 代表着是统一资源定位符(Uniform Resource Locator)。
      URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
      也可认为由4部分组成:协议、主机、端口、路径
      URL的一般语法格式为:
      (带方括号[]的为可选项):
      protocol :// hostname[:port] / path / [;parameters][?query]#fragment
      
      protocol(协议)
      hostname(主机名)
      port(端口号)
      path(路径)
      parameters(参数)
      query(查询)
      fragment(信息片断)

      1,使用_或-来让URI可读性更好
      eg: http://www.oschina.net/news/38119/oschina-translate-reward-plan
      2,使用/来表示资源的层级关系
      eg: https://github.com/git/git/blob/master/block-sha1/sha1.h
      3,使用?用来过滤资源
      eg: https://github.com/git/git/pulls?state=closed
      4,,或;可以用来表示同级资源的关系
      eg: /git/git /block-sha1/sha1.h/compare/e3af72cdafab5993d18fae056f87e1d675913d08;bd63e61bdf38e872d5215c07b264dcc16e4febca

统一资源接口

  • 接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。
      GET(SELECT):从服务器取出资源(一项或多项)。
      POST(CREATE):在服务器新建一个资源。
      PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
      PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
      DELETE(DELETE):从服务器删除资源。  

      HEAD:获取资源的元数据。
      OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。  
GET
  • 提供的资源的只读访问。
      安全且幂等
      获取表示
      变更时获取表示(缓存)
      200(OK) - 表示已在响应中发出
      204(无内容) - 资源有空表示
      301(Moved Permanently) - 资源的URI已被更新
      303(See Other) - 其他(如,负载均衡)
      304(not modified)- 资源未更改(缓存)
      400 (bad request)- 指代坏请求(如,参数错误)
      404 (not found)- 资源不存在
      406 (not acceptable)- 服务端不支持所需表示
      500 (internal server error)- 通用错误响应
      503 (Service Unavailable)- 服务端当前无法处理请求
POST
  • 用于更新现有资源或创建新的资源。
      不安全且不幂等
      使用服务端管理的(自动产生)的实例号创建资源
      创建子资源
      部分更新资源
      如果没有被修改,则不过更新资源(乐观锁)
      200(OK)- 如果现有资源已被更改
      201(created)- 如果新资源被创建
      202(accepted)- 已接受处理请求但尚未完成(异步处理)
      301(Moved Permanently)- 资源的URI被更新
      303(See Other)- 其他(如,负载均衡)
      400(bad request)- 指代坏请求
      404 (not found)- 资源不存在
      406 (not acceptable)- 服务端不支持所需表示
      409 (conflict)- 通用冲突
      412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
      415 (unsupported media type)- 接受到的表示不受支持
      500 (internal server error)- 通用错误响应
      503 (Service Unavailable)- 服务当前无法处理请求
PUT
  • 用于创建一个新的资源。
      不安全但幂等
      用客户端管理的实例号创建一个资源
      通过替换的方式更新资源
      如果未被修改,则更新资源(乐观锁)
      200 (OK)- 如果已存在资源被更改
      201 (created)- 如果新资源被创建
      301(Moved Permanently)- 资源的URI已更改
      303 (See Other)- 其他(如,负载均衡)
      400 (bad request)- 指代坏请求
      404 (not found)- 资源不存在
      406 (not acceptable)- 服务端不支持所需表示
      409 (conflict)- 通用冲突
      412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
      415 (unsupported media type)- 接受到的表示不受支持
      500 (internal server error)- 通用错误响应
      503 (Service Unavailable)- 服务当前无法处理请求
DELETE
  • 用于删除资源。
      不安全但幂等
      删除资源
      200 (OK)- 资源已被删除
      301 (Moved Permanently)- 资源的URI已更改
      303 (See Other)- 其他,如负载均衡
      400 (bad request)- 指代坏请求
      404 (not found)- 资源不存在
      409 (conflict)- 通用冲突
      500 (internal server error)- 通用错误响应
      503 (Service Unavailable)- 服务端当前无法处理请求    
OPTIONS
  • 用于得到支持的操作上的资源。

资源的表述

  • 资源在外界的具体呈现,可以有多种表述(或成为表现、表示)形式,在客户端和服务端之间传送的也是资源的表述,而不是资源本身。
  • 资源的表述包括数据和描述数据的元数据,例如,HTTP头"Content-Type" 就是这样一个元数据属性。
posted on 2020-11-02 14:36  码农后生  阅读(158)  评论(0编辑  收藏  举报