zoukankan      html  css  js  c++  java
  • RESTful规范

    RESTful

          web服务交互                   

    我们在浏览器中能看到的每个网站,都是一个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      

    什么是资源

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

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

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

    什么是URI,URL

      URI 统一资源标志符。

      URL 统一资源定位符。

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

    统一资源接口

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

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

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

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

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

    资源的表述

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

    状态转移

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

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

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

    总结

      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

        

      

        

      

      

      

     

  • 相关阅读:
    平衡二叉树之RB树
    平衡二叉树之AVL树
    实现哈希表
    LeetCode Median of Two Sorted Arrays
    LeetCode Minimum Window Substring
    LeetCode Interleaving String
    LeetCode Regular Expression Matching
    PAT 1087 All Roads Lead to Rome
    PAT 1086 Tree Traversals Again
    LeetCode Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/chunqiuyu/p/9896366.html
Copyright © 2011-2022 走看看