• REST


    REST

    • REST不是一种协议,不是一种文件格式,更不是一种开发框架。
    • REST是一系列的设计约束的集合,包括无状态性、将超媒体作为应用状态引擎等,我们将这些约束 称为 Fielding 约束。

    人——机 Web

    三项技术支撑着当今的互联网,它们分别是:

    1. URL命名约定
    2. HTTP协议
    3. HTML文档



    资源和表述

    • 当我们通过Web浏览器向Web服务器的URL 发送一次HTTP请求,服务器会发送一个文档作为相应(通常是一个HTML文档,也可能是图片或其他二进制文档)
    • 不论服务器发送了什么文档,我们都将这个文档称之为资源的表述(Representation of the Source)



    可寻址性

    • URL和URI
    • 每个URL代表一个也仅代表一个资源。URL和URI的介绍
    • 可寻址性原则指的是一个资源应该有一个属于自己的URL。
    • 一个URL是一个唯一的名字,用户可以通过URL毫无歧义的引用资源。



    无状态性-"登录"的假象

    • 当访问一个网站的主页,从用户的角度来看,我已经"登录到"主页面了。
    • 但对服务器而言,它在作出响应之后即已经忘记了我的存在。
    • Web服务器并不需要因为我的浏览器因为停留在这个主页,就需要为我通宵达旦的工作。 以上即是“无状态性”

    无状态性(statelessness)

    1. 指的是服务器不关心客户端的状态。
    2. 并不是说客户端和服务器端不需要保存状态。



    自描述(self-descriptive)

    当请求一个网页的时候,你收到的HTML文档不仅仅可以提供你所要求的信息,还会帮助你决定下一步的操作



    链接

    当我们单击链接<a href="/messages">发表观点</a>,我的浏览器将向与上次同样的服务器发 送HTTP请求。




    向主机名(Host)为 www.servicecomputing.top 发送message请求,采用的协议是HTTP 1.1版本,采用的方法是GET方法
    当发送请求之后,服务器会响应(响应头--- 状态码、资源的表述)



    HTTP 标准方法

    HTTP标准(RFC 2616)定义了客户端可以应用到一个资源的 8 种方法。
    重点关注的方法包括:
    • GET
    • HEAD
    • POST
    • PUT
    • DELETE
    • PATCH



    表单和重定向

    当我们在文本框中输入点什么,点击 提交,一个新的HTTP请求产生了。




    应用状态(Application State)

    • 图中的每个状态都对应于浏览器窗口打开的一个特定页面(或没有页面),在REST的世界里,这些 信息被称之为 应用状态 (Application State)。
    • 当我们在页面间不停切换(通过单击链接或提交表单)的时候,即是从一个状态转换到另一个状态。



    资源状态(Resource State)

    服务器管理的资源,如主页(通过 / 提供服务)和观点列表(通过 /messages)提供服务;服务 器同时也将每条观点作为资源进行管理。这些资源的状态叫做 资源状态(Resource State)。

    GET /messages 请求不会改变资源状态

    POST /messages 请求将服务器切换到一个新的状态,且再也没法回到原来的状态了

    网站是通过表述性状态移交(REpresentational State Transfer)工作的: 应用状态保存在客户端,但服务器端可以向客户端发送表述(Representation)文档来操纵它 资源状态保存在服务器端,但客户端可以通过向服务器发送表述操作它(提交的表单描述了客户端所期望的 新状态)




    连通性(Connectedness)

    通过 、 每个网页会告诉你如何获取相邻的网页。

    网络作为一个整体按照连通性原则运转,这个原则的叫法是“将超媒体作为应用状态引擎 (hypermedia as the engine of application state, HATEOAS),也可称为连通性或超 媒体约束。

    超媒体:认为是HTML链接、表单的抽象就行

  • 相关阅读:
    About cookie
    关于在Servlet中的Fileter
    看完这篇正则表达式,50岁的马化腾眼睛湿润了
    Tutorial中的hello2代码
    Development descriptor
    What is the Annotation?
    剖析容器的注入技术
    LDAP & Implentation
    RESTful levels、HATEOAS
    Mysql8.0导入数据时出错
  • 原文地址:https://www.cnblogs.com/fenixG/p/13068863.html
Copyright © 2020-2023  润新知