1.什么是RESTful
restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 ——百度百科
简单来说,就是提供了一种规则,能够让api更加规范,易懂。
- REST的解释
REST是Representational State Transfer的缩写,翻译过来就是”表现层状态转化“。表现层值得是把资源呈现出来的一中形式,像HTML;状态转移是指让服务器发生状态的变化(数据和状态的改变等);我感觉就像是前后端交互过程的一个称呼。 - REST架构风格最重要的架构约束有6个:
- 客户-服务器(Client-Server)
通信只能由客户端单方面发起,表现为请求-响应的形式。 - 无状态(Stateless)
通信的会话状态(Session State)应该全部由客户端负责维护。 - 缓存(Cache)
响应内容可以在通信链的某处被缓存,以改善网络效率。 - 统一接口(Uniform Interface)
通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。 - 分层系统(Layered System)
通过限制组件的行为(即每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。 - 按需代码(Code-On-Demand,可选)
支持通过下载并执行一些代码(例如Java Applet、Flash或JavaScript),对客户端的功能进行扩展。
———百度百科
- 在什么情况下使用
在以调动资源为主的接口设计中就可以使用了
2.为什么要使用RESTful风格
- 更加语义化,方便理解
- 具有安全性和幂等性(同一个请求发送一次或多次对服务器的影响都是一样的)
- 让api的设计面向资源化
因为每一个URI代表一种资源,所以在设计api时不能使用动词,什么get,update,delete都不应该出现在uri中。
3.如何使用
- RESTful风格需要使用到的动词
安全性:
GET(SELECT):从服务器取出资源(一项或多项)。
幂等性:
POST(CREATE):在服务器新建一个资源
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
———不常用的动词———
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
—— 阮一峰的网络日志
这些动词是HTTP协议提供的
- 前端以axios为例
//不同的动词,修改method即可(axios.后面的动词)
//post需要在uri后面使用一个json格式的数据
this.axios.delete(`/users/`+id
)
.then((response)=> {
console.log(error);
})
.catch((error)=> {
console.log(error);
});
- 后端以springMVC为例
@RestController
@RequestMapping("/users")
public class userController{
@RequestMappering(value="/{id}",method=RequestMethod.DELETE)
public void delete(@PathVariable("id")int id){
}
}
大概就是这个意思
- 一些常见的使用
【GET】 /users # 查询用户信息列表
【GET】 /users/1001 # 查看某个用户信息
【POST】 /users # 新建用户信息
【PUT】 /users # 更新用户信息(全部字段)
【PATCH】 /users/ # 更新用户信息(部分字段)
【DELETE】 /users/1001 # 删除用户信息
通过变换参数来实现功能的扩展,像【GET】,没有传入参数,就是查询全部;传入了一个id,就是查询查询一个用户;传递一组id,就是查询一组用户。每个【GET】都在后端对应一个方法。 - 常见的误区
uri中不应该包含动词,应该全部使用名词,尽量使用复数。
若返回视图,把表单中name为_method的input值改为GET、POST、HEAD,不能使用PUT、DELETE等。
——————————————————————————
如果本文存在错误,请直接评论或私信我