RESTful规范

 

restful规范

- 介绍:

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

  符合REST的约束条件和原则的架构,就是RESTful架构;

 

- 核心思想:

  - 面向资源编程:每个URL代表一种资源,URL中尽量不要用动词,要用名词。

  - 根据method不同,进行不同的操作: GET/POST/PUT/DELETE/PATCH

- url中体现:

  - 体现版本:

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

https://v1.bootcss.com/mycss

  - 体现是否是API(接口):

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

https://api.bootcss.com/mycss

  - 体现过滤条件

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

  - 尽量使用HTTPS:安全

- 返回的要求:

  - 响应时携带状态码:

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

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

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

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

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

  - 返回值:

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

  POST请求  返回新增的数据

  PUT请求  返回更新数据

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

  DELETE请求  返回值为空

  - 返回错误信息:当有错误时应当返回错误信息;

  - 返回携带超链接:以便指引用户还有哪些连接可以跳转;

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

 

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服务则是以本身所定义的操作集,来访问网络上的资源。

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

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

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

 

理解REST

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

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

 

- 资源的概念:

任何事物,只要有被引用到的必要,它就是一个资源。
浏览器中看到的文本,视频,图片等等都是资源
资源可以是一个实体,同时,也可以是抽象概念;
例如 某个人的联系方式,个人资料,人与人之间的关系 等等;

在引用资源的时候,资源一定会有一个标识(变量名),
在web中的唯一标识就是URI

- URI 与 URL的区别:

URI 统一资源标志符。
URL 统一资源定位符。
URI是给资源进行标识的,URL是描述资源地址的;
简单点说,URI类同与 数据库中的表;而URL是每条数据的唯一ID;

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

- 统一资源接口:

通过URL去访问到资源,就可以对资源会有很多不同的操作,增删改查;
之前可能会增加写一个url,删除写一个url,改又一个url;
现在只需要一个url,来根据请求方式不同来对资源进行不同的操作,
这就是统一资源接口;
遵循HTTP请求方法的语义,也就是说POST请求就在新增数据等

- 资源的表述:

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

HTTP协议中协定了客户端接受,和服务端发送的格式:
    客户端通过Accept头请求一种特定格式的表述,
    服务端通过Content-Type告诉客户端资源的表述形式;

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

- 状态转移:

跳转,<a>标签 <button>标签等等
通过超链接的指引来告诉用户还有哪些资源状态可以进入 服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。 这些类似
"下一页"之类的链接起的就是这种推进状态的作用——指引你如何从当前状态进入下一个可能的状态。

- 总结REST风格的特点:

  - 在web中,只要有被引用的必要都叫资源

  - 每个URI代表一个资源,独一无二的。

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

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

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

 

posted @ 2018-10-26 20:58  浮生凉年  阅读(123)  评论(0编辑  收藏  举报