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/
}
}

浙公网安备 33010602011771号