• RESTful


      我们在浏览器中能看到的每个网站,都是一个web服务。那么我们在提供每个web服务的时候,

      都需要前后端交互,前后端交互就一定有一些实现方案,我们通常叫web服务交互方案。

      目前主流的三种web服务交互方案:

        -- REST ( Representational State Transfer)表述性状态转移

        -- SOAP (Simple Object Access Protocol)  简单的对象访问协议

        -- XML-RPC (XML Remote Procedure Call)基于XML的远程过程调用

      XML-RPC是通过XML将调用函数封装,并使用HTTP协议作为传送机制。

      后来在新的功能不断被引入下,这个标准慢慢演变成为今日的SOAP协定。

      SOAP服务则是以本身所定义的操作集,来访问网络上的资源。

      SOAP也是基于XML的,但是它不只限于HTTP协议的传输,包括TCP协议,UDP协议都可以传输。

      REST是Roy Thomas Fielding博士于2000年在他的博士论文里提出来的。

      REST相比SOAP更加简洁,性能和开发效率也有突出的优势。

      我们今天主要说一下这个REST,现在越来越多的web服务开始采用REST风格设计和实现。

      例如,amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

      我们接下来要学的框架也是遵循REST风格的,那么我们来看下它到底是个什么样的风格,

      了解了它是什么后,我们看下它的优点是什么,我们为什么用它。

    理解REST

      如果我们想要理解restful,就要理解Representational State Transfer这个词组的意思,表征性状态转移。

      这里所说的表征性,其实指的就是资源。通常我们称为资源状态转移。

    什么是资源

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

      我们在浏览器中看到的文本,视频,图片等等都是资源。这些都是实实在在存在的实体。

      资源可以是一个实体,也可以是抽象概念。

      比如说吧:

        -- 小强的个人信息

        -- 超哥的手机号

        -- 小强跟超哥的潜在关系

      这些都是资源,可以是实体比如个人信息,手机号。也可以是抽象的概念,比如两个人的关系......

      那么在我们的网络中,我们要引用资源,资源一定要有一个标识,在web中的唯一标识就是URI,

      URI我们不常听说,我们经常用URL,那么两者区别是什么呢~

    什么是URI,URL

      URI 统一资源标志符。

      URL 统一资源定位符。

      URI是给我们的资源进行标识的,URL是描述我们资源地址的。

      比如说我们每个人都有名字和身份证,名字可能重名,但是身份证是唯一的,

      那么身份证号就可以是我们的URI,标识我们每个人,也可以说标识我们每个资源。

      我们可以通过身份证号找到Alex,也可以通过下面这种方式找到他.....

      小强的住址协议://地球/中国/屌丝省/屌丝市/寡妇村/250号街道/250号/Alex

      这个就是我们的URL,我们通过这两种方式都可以找到我们的资源,

      其实我们的URL可以说是URI的子集,通过定位的方式实现的URI。

      这是我们资源的定位~~有了资源的地址后,我们要去访问资源,那么我们要通过什么方式去访问呢~~

    统一资源接口

      现在我们可以通过URL去访问到资源,那么我们对资源会有很多不同的操作,增删改查,

      以前我们可能会为了这个增加新设计一个URL,然后这个URL就是对数据进行增加的,

      还会为了更新和删除分别设计一个URL,现在我们不用了,我们只有一个URL,

      然后根据HTTP请求方式的不同,对资源进行不同的操作,这个就是是统一资源接口。

      我们一定要遵循HTTP请求方法的语义,也就是说POST请求就在新增数据等....

    资源的表述

      资源的表述其实就是资源的展现形式,我们客户端和服务端传输的都是资源的表述,而不是资源本身。

      例如文本资源可以采用html、xml、json等格式,图片可以使用PNG或JPG展现出来。

      那么客户端如何知道服务端提供哪种表述形式呢?

      可以通过HTTP内容协商,客户端可以通过Accept头请求一种特定格式的表述,服务端则通过Content-Type告诉客户端资源的表述形式。

      这些资源的表述呈现在页面上,就是我们说的资源状态。

    状态转移

      我们在看页面的时候,从当前资源的表述(也可以说状态或者表现层)会跳转到其他的资源状态。

      服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。

      这些类似"下一页"之类的链接起的就是这种推进状态的作用——指引你如何从当前状态进入下一个可能的状态。

    总结 

      可以得知REST风格的特点如下:

      (1)在web中,只要有被引用的必要都叫资源。

      (2)每个URI代表一个资源,独一无二的。

      (3)客户端通过HTTP的方法,对服务器端资源进行操作;

      (4)客户端和服务器之间,传递这种资源的某种表现层;

      (5)通过超链接的指引,实现"表现层状态转移"。

    RESTful  

      如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

      一种软件的架构风格,设计风格,  为客户端和服务端的交互提供一组设计原则和约束条件。

    restful规范

    一  面向资源编程

      每个URL代表一种资源,URL中尽量不要用动词,要用名词。

    二  根据method不同,进行不同的操作

      GET/POST/PUT/DELETE/PATCH

    三  在URL中体现版本

      https://www.bootcss.com/v1/mycss

      https://v1.bootcss.com/mycss

    四  在URL中体现是否是API

      https://www.bootcss.com/api/mycss

      https://api.bootcss.com/mycss

    五  在URL中的过滤条件

      https://www.bootcss.com/v1/mycss?page=3

    六  尽量使用HTTPS

      https://www.bootcss.com/v1/mycss

    七  响应时设置状态码

      1**   信息,服务器收到请求,需要请求者继续执行操作

      2**  成功,操作被成功接收并处理

      3**  重定向,需要进一步的操作以完成请求

      4**  客户端错误,请求包含语法错误或无法完成请求

      5**  服务器错误,服务器在处理请求的过程中发生了错误

    八  返回值

      GET请求 返回查到所有或单条数据

      POST请求  返回新增的数据

      PUT请求  返回更新数据

      PATCH请求  局部更新  返回更新整条数据

      DELETE请求  返回值为空

    九  返回错误信息

      返回值携带错误信息

    十   Hypermedia API

      如果遇到需要跳转的情况 携带调转接口的URL 

    ret = {
                    code: 1000,
                    data:{
                        id:1,
                        name:'小强',
                        depart_id:http://www.baidu.com/api/v1/depart/8/
                    }
                }

    123

  • 相关阅读:
    matplotlib数据可视化之柱形图
    xpath排坑记
    Leetcode 100. 相同的树
    Leetcode 173. 二叉搜索树迭代器
    Leetcode 199. 二叉树的右视图
    Leetcode 102. 二叉树的层次遍历
    Leetcode 96. 不同的二叉搜索树
    Leetcode 700. 二叉搜索树中的搜索
    Leetcode 2. Add Two Numbers
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/daofaziran/p/9858867.html
Copyright © 2020-2023  润新知