RESTful 概念

概念

RESTful通常采用Http+JSON实现。Representational State Transfer 全称翻译为表现层状态转化。REST 是属于 WEB 自身的一种架构风格,是在 HTTP 1.1 规范下实现的。REST最大的几个特点为:资源统一接口URI无状态

Resource:资源。就是网络上的一个实体。
Representational:表现形式,比如用JSON,富文本等;
State Transfer:状态变化。通过HTTP 动作实现。

资源就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。每个资源对应一个URI,想要获取一个资源,访问它的URI就可以了,URI只代表资源的实体,资源的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对”表现层”的描述。

客户端想与服务器互动,用到的手段只能是HTTP协议。对数据的CRUD操作,分别对应Http方法。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

什么是RESTful架构:

rest一种软件架构风格,而不是标准,只是提供了一组设计原则和 约束条件。它主要用于客户端和服务器交互类的软件。基于这 个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制
- 每一个URI代表一种资源;
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。

Springboot 实现 Restful 服务,基于 HTTP / JSON 传输,适用于前后端分离。

@RequestMapping 处理请求地址映射。

method - 指定请求的方法类型:POST/GET/DELETE/PUTvalue - 指定实际的请求地址
GET?a=1 //普通请求
GET/a/1 //rest请求

幂等性

幂等性用来表示发送一次和多次请求引起的边界效应是一致的。
HTTP GET方法,用于获取资源,不管调用多少次接口,结果都不会改变,所以是幂等的。

GET     /listUsers # 获取用户列表
GET     /user/1    # 查看指定的用户

HTTP DELETE方法 调用一次和多次对资源产生影响是相同的,所以也满足幂等性。
HTTP POST方法是一个非幂等方法,因为调用多次,每次都会产生新的资源。
HTTP PUT方法 因为它直接把实体部分的数据替换到服务器的资源,我们多次调用它,只会产生一次影响,但是有相同结果的 HTTP 方法,所以满足幂等性。

POST和PUT对比

两者对比,两个方法都用于创建资源,本质的差别是在幂等性。HTTP POST方法是非幂等,所以用来表示创建资源,HTTP PUT方法是幂等的,因此表示更新资源更加贴切。

restful与rpc对比

1、RPC(Remote Procedure Calling),面向方法,即从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
由于一些产品复杂度高,所以普通RestfulAPI方法无法表达,比如重启实例、退款、挂载磁盘等,所以目前Ecs等很多产品都使用这类接口
2、REST风格。REST是一套设计原则(风格/模式),而非具体的架构或者标准。这个风格API适用于资源类的API,进行资源的增、删、改、查等操作。所以目前使用到的有服务编排、容器服务、批量计算等多产品使用此风格API。
参考:
如何理解RESTful的幂等性
RESTful 架构风格概述
RPC vs RESTful

猜你喜欢

转载自blog.csdn.net/chang_li/article/details/79965427