• 什么是RESTful风格


    http不仅仅是传输协议,更是一种应用协议。REST,即Representational State Transfer的缩写。意为是"表现层状态转化"。RESTful表示一种风格,理解REST前需要理解资源,何谓资源,广义的资源是指可以操作的所有对象。可能是一个系统资源,如txt、jgp、xml …,亦可以是诸如自己定义的虚拟集合的抽象,如books、usrs、times。RESTfutl代表一种简洁、方便、快捷、高效、透明的架构,这取决于你怎样组合。具有如下特点:

    1、规范化接口访问方式。这些http操作方法包括GET/POST/PUT/DELETE/OPTIONS等,每个操作方法都代表一个相同意义的操作,它向所有人透明地表明操作方式。比如GET只能读取/拉数据,当然你也可以是添加数据,但建议不要这么做,不然这样就失去了REST的意义。

    1) GET 读取

    2) POST 添加

    3) PUT 修改

    4) DELETE 删除

    2、资源标识唯一。通过URI表示一个资源名称,形式/resource/patch。如/users,表示用户的组合,或用户群。当然还可以继续标识某个具体的一个用户,/users/11,表示id为11的用户。当然,你也可以又用一组/usrgroup/11的URI代表操作用户组,不过不建议这么做,因为这样从字面上重复了/users/11资源表示的内容。一个资源URI总是包含第一条实现的方法:

    GET /users/11

    POST /users/11

    PUT /users/11

    DELETE /users/11

    当然,仅有这些还不足以包括资源操作的所有需求,所以还可以包含请求参数,如GET /users?type=list&page=1。

    3、状态的转化。这就是REST的真实含义,指它允许资源URI具有不同的表现形式。同一个URI,根据不同请求方式,执行的动作不同;还可以根据请求的Header Accept的不同返回不同的结果,如text/html、text/css、text/xml等等。也可以理解为body不同。如查询快递一般,可以上次查询,物品还在仓库,而过一段时间已经在路上了。它表示的是一个互动过程。

    4、所有信息都包含在当前请求中。请求的方式包含在 Request Header的Method中,还可以包含Accept、Accept-Encoding、Accept-Language,使用Authentication、Cookie等信息表明身份。同样,服务端通过发送Content-Length、Content-Type响应执行情况。最重要的是,需要返回Status Code通知执行状态,如200 201 400 404 500等http code。REST认为,所有信息都能通过请求一次性发送,而不必再采用方式保存状态,请求的信息本身已经说明了请求的意义。

    5、无状态性。这是REST最重要的特性之一,这个状态指的是客户端与服务端无需为每次保存请求状态,客户端请求不必考虑当前状态,不必考虑上下文。具体上说,就是不必使用session等工具跟踪、保存请求的特殊性。比如,无论是谁,从哪里发送,几时发送,对同一个URI资源发送请求的结果都是一样的。据传,这样的设计是为当一台服务器宕机时,另一台服务器可以无差别地响应对方的请求。客户端请求只认URI,而不需理后台的设计。

    实际上,在如今执行的RESTful设计当中,完全能执行这个要求的很少,最彻底的云服务,大部份为RESTful-like的风格。

    6、可实现请求缓存。通过缓存减少请求次数,在HTTP响应里利用Cache-Control、Expires、Last-Modified三个头字段,可以让浏览器缓存资源一段时间。

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/sumsung753/p/4251754.html
Copyright © 2020-2023  润新知