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风格
表述性状态转移
资源 网页中能看到的都是资源
URL 统一资源定位符
URI 统一资源标识符
统一资源接口
对资源的操作根据HTTP请求方式的不同来进行不同的操作
遵循HTTP请求方式的语义
前后端传输的是资源的表述
展现的是资源的状态
通过超链接的指引来告诉用户接下来有哪些资源状态可以进入
凡是遵循TEST风格实现的前后端交互都叫RESTful架构
核心思想
面向资源去编程 url中尽量名词不要动词
根据HTTP请求方式的不同对资源进行不同的操作
在url中体现的
体现版本
https://v3.bootcss.com/
https://.bootcss.com/v3
体现是否是API
https://v3.bootcss.com/api
有过滤条件
https://v3.bootcss.com/course?page=1
尽量用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/
}
}