RESTful风格:
简单来说,RESTful就是一种将请求方式融合到路径中的一种请求路径书写风格,注意这里是风格,不是规定,我们也可以不使用他或者不是非常严格的按照他规定的样式来写,但是由于行业中大多数的人在编程的时候都按照这种方式进行书写,所以就变成了一种约定俗成的事情。
首先我们先来讲RESTful风格的特点,然后再来讲如何将我们之前的请求方式变成RESTful风格。RUST风格有一个最明显的特点就是将参数放在请求路径中,我们可以将之前的请求方式与RESTful风格进行对比就非常的明显了:
### 传统风格
PUT http://localhost:8080/users?id=1
### RUST风格
PUT http://localhost:8080/users/1
在之前,我们的路径和参数之间使用问号”?“分隔,并且使用“参数名=参数值”的方式,那么RESTful风格就是将参数当作路径的一部分,参数和路径之间依然是使用斜杠作为连接符。
那么介绍完了请求路径,那么如何去访问并获取里面的数据呢?方法也非常的简单,大体分为以下几个步骤:
1、在浏览器发送请求:
首先我需要构建出一个controller:
package com.springBoot.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/books")
public class bookController {
@GetMapping
public String doManin(){
System.out.println("请求成功!");
return "index";
}
}
这里介绍一下在编写RESTful风格的请求的时候,我们的Controller其实也是有一套自己的编写的规范的,比如我们在使用注解的时候要修改成@RestController,这其实是两个注解的结合,是@ResponseBody和@controller的结合,我们点进去这个注解也可以发现:
他里面其实就是运用了这两个注解来完成这个效果,是什么意思呢,就需要我们回忆一下我们之前在学习Spring的时候的响应相关的知识,@ResponseBody表示所有的返回值都是以字符串的方式进行相应的,也就是当我们把这个注解应用在类上的时候,这个类中的所有的方法都会带上@ResponseBody注解,返回值也都是直接以字符串的形式出现在页面上。
2、在浏览器访问我们的路径:
这个路径是写在类上的,所以我们访问的时候要直接访问类上的@RequestMapping中的值,这里我的值是/books:
首先是在页面上看到了我们的返回值,其次在控制台看到了我们的输出语句,这就表示请求正常。
3、获取数据:
RESTful风格的参数是写在路径里的,那么我们要如何去获取这个参数呢?首先我们要在方法的请求路径映射中定义参数的占位符,也就是在参数在请求路径的位置:
比如此时如果我要传递一个参数,那么完整的路径就是:
http://localhost:8080/users/参数
也就是说参数是在我的路径的最后一位,那么我在获取的时候,控制器的方法的请求映射就可以这么写:
我是用一个占位符,这个占位符的格式就是一对花括号,中间使用一个变量去占位,代替我要传递的参数,如何获取,按照之前我们的经验,沃恩要在形参中添加变量,注意这个变量的名字要和我们的占位符相同:
设定了形参,还没有完成,还需要使用一个注解去指明我的参数是来自于请求路径,这个注解叫做:@PathVariable
这样一个接受请求参数的Controller就完成了,我们在方法输出我们重启服务器,并发送一个带有参数的请求,并且我们在Controller中将我们输入的参数输出到页面中,并且打印在控制台上:
那么现在,我们就看到了参数已经传递进来了,并且我们也获取到了。
RESTful的编码规范:
之前我们说过,RESTful除了在请求路径中有不同的规范之外,还有一个重要的特点就是,我们在名明明请求路径的时候不写名词,比如find,delete,update这种一看就知道是什么操作的词语,我们直接用名字,描述操作的对象,比如findUserById这是明显的我们传统方式的请求路径,RESTful直接就是users,注意要加s表示复数操作,那么我们怎么知道或者如何区分这具体是什么操作呢?通过不同的请求方式:
package com.springBoot.controller;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/users")
public class userController {
@GetMapping
public String selectById(){
System.out.println("select By Id ……");
return "index";
}
@PostMapping
public String selectAll(){
System.out.println("select All");
return "index";
}
@DeleteMapping
public String delete(){
System.out.println("DELETE");
return "index";
}
@PutMapping
public String update(){
System.out.println("UPDATE");
return "index";
}
}
这是一个比较标准的RESTful风格的编码方式,他将请求路径写在类上,根据不同的请求方式调用不同的方法,而不同的方法去做不同的操作,其中我们主要会用到四种方法:
GET:查询操作
DELETE:删除操作
PUST:保存
PUT:修改
常用的四种请求方式对应四种不同的操作,而路径都是统一的。
快速发送不同方式的请求:使用PostMan
PostMan是一款可以快速发送不同请求方式的请求的工具,他的界面是这样的:
上面是请求的方式和路径,右边蓝色的是发送请求的按钮,下面就是请求结果,我们就来发送不同的请求方式:
使用postman可以快速发送不同的请求,当然如果你喜欢在IDEA里面就完成各种操作,那么IDEA里面也是可以完成对请求的模拟的:
快速发送不同方式的请求:使用IDEA:
1、创建一个请求文件:
在这里IDEA支持直接创建一个请求文件:
这个文件的编写格式是前面写请求方式,大写小写都可以,好像是推荐使用大写,然后后面跟上请求路径。
多个请求之间用三个井号分开,不然他会认为这是一个请求,然后就可以点击前面的绿色三角符号发送请求:
从上到下依次是请求头,请求体以及请求的状态码。
还有很多的工具可以使用,按照个人习惯进行选择即可。