• RESTful 分享


    RESTful 分享

    1. 什么是RESTful

    2. 理解RESTful

    3. RESTful的使用

    1.什么是RESTful

    REST全称是Representational State Transfer,中文译文就是“表述性状态转移”。

    在2000年,由Roy Fielding(HTTP规范的主要编写者之一)在博士论文中提出的。

    写作目的:想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。

    REST本身并没有创造新的技术、组件或服务,REST指的是一组架构约束条件和原则。而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

    2.理解RESTful

    要理解RESTful架构,需要理解Representational State Transfer这个词组到底是什么意思,它的每一个词都有些什么涵义。
    结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释。

    • 资源与URI
    • 统一资源接口
    • 资源的表述
    • 资源的链接
    • 状态的转移

    2.1 资源与URI

    REST全称是表述性状态转移,其实指的就是资源的表述性

    任何事物,只要有被引用到的必要,它就是一个资源。
    一些资源:

    • 某用户的手机号码
    • 两个产品之间的依赖关系
    • 某用户的个人信息

    • 要让一个资源可以被识别,需要有个唯一标识,在Web中这个唯一标识就是URI(Uniform Resource Identifier)。URI既可以看成是资源的地址,也可以看成是资源的名称.

    URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联。

    命名好的URI:

    • https://github.com/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08
    • https://github.com/git/git/pulls
    • https://github.com/git/git/compare/master…next

    命名技巧:

    • 使用_或-来让URI可读性更好
    • 使用/来表示资源的层级关系
    • 使用?用来过滤资源
    • ,或;或…可以用来表示同级资源的关系

    2.2 统一资源接口

    RESTful架构应该遵循统一接口原则,统一接口包含了一组受限的预定义的操作,即不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性。
    GET:获取资源,安全且幂等
    POST:创建资源(当使用服务端管理的(自动产生)的实例号),不安全且不幂等
    PUT:创建资源(当用客户端管理的实例号),更新资源(通过替换的方式)
    DELETE:删除资源,不安全但幂等

    统一资源接口要求使用标准的HTTP方法对资源进行操作,所以URI只应该来表示资源的名称,而不应该包括资源的操作。

    错误示例:

    • GET /getUser/1
    • POST /createUser
    • PUT /updateUser/1
    • DELETE /deleteUser/1

    2. 3 资源的表述

    客户端通过http方法获取的资源,更确切的说是资源的表述
    资源的表述包括数据和描述数据的元数据,
    例如,HTTP头"Content-Type" 就是这样一个元数据属性。服务端则通过Content-Type告诉客户端资源的表述形式(资源的格式是什么)。
    在这里插入图片描述

    2.4 资源的链接

    当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念:把一个个把资源链接起来.
    。在《RESTful Web Services》一书中,作者把这种具有链接的特性称为为连通性。

    2.5 状态的转移

    http协议是无状态的,服务器不记录客户端的状态(登录状态)。无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态。
    应用状态与资源状态
    状态应该区分应用状态和资源状态,客户端负责维护应用状态,而服务端维护资源状态。客户端与服务端的交互必须是无状态的,并在每一次请求中包含处理该请求所需的一切信息。
    服务端不需要在请求间保留应用状态,只有在接受到实际请求的时候,服务端才会关注应用状态。

  • 相关阅读:
    QTCreater调用MatLab生成的.dll文件
    yolov5训练自己的水印数据进行水印目标检测
    Unity3D AStar地图编辑与寻路测试详解
    灰度、rgb之间的概念
    echarts饼图label显示不全原因?
    【c++】信号处理--signal、raise、sigaction的介绍
    【Python百日进阶-Web开发-Feffery】Day398 -“一起Dash”训练营Lesson-08_利用fac构建表单(下)、re正则表达式
    lv4 嵌入式开发-9 静态库与动态库的使用
    网络协议之:redis protocol 详解
    前端中浮动布局注意点
  • 原文地址:https://blog.csdn.net/qq_44788518/article/details/133976774