restful规范学习

web服务交互

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

  --REST(表述性状态转移)

  --SOAP(简单的对象访问协议)

  --XML-RPC(基于XML的远程呢个调用)

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

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

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

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

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

REST的理解

理解restful先了解一下Representational State Transfer这个词组的意思,表征性状态转移

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

1.什么是资源

比如:

  甲某人的个人信息

  乙某人的手机号

  甲某人和乙某人的潜在关系

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

那么在我们的网络中,我们要引用资源,资源一定哟啊有一个表示,在web中的标识就是url

url我们不常听说,我们经常用url,那么两者区别是什么,接下来介绍:~~~~

2.什么是URI,URL

  URI统一资源标志符

  URL统一资源定位符

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

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

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

  我们可以通过身份证号找到甲某人,也可以通过下面这种凡是找到他

  甲某人的住址:协议://地球/中国/某省/某市

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

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

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

3.统一资源接口

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

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

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

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

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

4.资源的表述

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

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

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

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

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

5.状态转移

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

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

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

6.总结

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

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

  2.每个URI代表一个资源,独一无二的

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

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

  5.通过超链接的指引,实现'表现层状态转移'

 RESTful

  如果一个架构符合REST的约束提哦啊见和原则,我们就称它为RESTful架构

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

restful规范

1.面向资源变成

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

2.根据method不同,进行不同的操作\

  GET/POST/PUT;DELETE/PATCH

3.在URL中体现版本

  https://www.liubowen.com/v/home

  https://v.liubowen.com/home

4.在URL中体现版本

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

  https://api.bootcss.com/mycss

5.在URL中的过滤条件

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

6.尽量使用HTTPS

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

7.响应是设置状态码

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

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

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

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

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

8.返回值

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

  POST请求 返回新增的数据

  PUT请求返回都能信数据

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

  DELETE请求 返回值为空

9.返回错误信息

  返回值携带错误信息

10.Hypermedia API

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

  ret={

    code:1000,

    data:{

      id:1,

      name:'小强',

      depart_id:http://www.luffycity.com/api/v/depart/8/

      }

    }

 

posted @ 2019-10-16 13:41  7411  阅读(82)  评论(0)    收藏  举报