一、@RequestMapping 注解
1.1 @RequestMapping 注解简单小解
@RequestMapping 是经常被使用到的注解,他是用来注册接口的路由映射。
路由映射:当用户访问一个URL时,将用户的请求对应到程序中某个类的某个方法的过程就是路由映射。
1.2 @RequestMapping 使用
@RequestMapping 既可以修饰类,也可以修饰方法,但是它无法修饰对象。
@RequestMapping标识一个类:设置映射请求的请求路径的初始信息。
@RequestMapping标识一个方法:设置映射请求路径的具体信息

像下面这段代码,我就是设置了一个URL为:http://127.0.0.1:8080/log/hello 的一个网址,运行服务,在浏览器中输入这个网址之后会打印("hello,你好")如下图

java
@RequestMapping("/log")
@RestController
public class LogController {
@RequestMapping("/hello")
public String hello() {
return "hello,你好";
}
}
RequestMapping 即支持Get请求,也支持Post请求。
如果该地址需要指定使用Get请求来访问就可以添加@GetMapping注解,如果需要使用Post请求就需要添加@PostMapping注解。而且@GetMapping 和 @PostMapping 两个注解都是方法注解

java
@RequestMapping("/log")
@RestController
public class LogController {
// @RequestMapping("/hello")
@GetMapping("/hello")
public String hello() {
return "hello,你好";
}
}
@RequestMapping("/log")
@RestController
public class LogController {
// @RequestMapping("/hello")
@PostMapping("/hello")
public String hello() {
return "hello,你好";
}
}
1.3 请求传递参数的使用
1.3.1 传递单个参数
使用postman来进行访问,参数名要对的上才可以,此处我命名不规范,你们可以命名为name...
java
@RequestMapping("/test")
@RestController
public class TestController {
@RequestMapping("/r1")
public String r1(String r1) {
return "接收到参数:" + r1;
}
}
1.3.2 没有 @RestController 的报错信息
没有@RestController 注解之后,访问该URL就找不到,但是服务器并没有报错信息,因为404是客户端错误,所以这个问题本来就是服务器没返回数据导致客户端正常访问报错,是服务器错误,但是却是客户端错误信息,所以这个错误的排查难度会提高一点。

java
@RequestMapping("/test")
//@RestController
public class TestController {
@RequestMapping("/r1")
public String r1(String r1) {
return "接收到参数:" + r1;
}
}
1.3.3 不传递参数的报错信息
不传递参数无报错信息,需要单独注意,这是使用包装类型的传递,如果是基础类型(如:int....)等类型会出现报错信息。


1.3.4 使用基础类型接收参数不传递的报错信息
下面的代码使用int来接收,不传递参数会直接让前端收到后端报的500的错误码。后端也会有相应的报错信息

java
@RequestMapping("/test")
@RestController
public class TestController {
@RequestMapping("/r1")
public String r1(int name) {
return "接收到参数:" + name;
}
}
1.3.5 传递类型参数不匹配的报错信息
使用 Integer 作为参数,传递 String 类型的报错信息,前端为400,

java
@RequestMapping("/test")
@RestController
public class TestController {
@RequestMapping("/r1")
public String r1(Integer name) {
return "接收到参数:" + name;
}
}
1.3.6 传递多个参数
传递多个参数的时候需要注意变量名字需要对准,一个名字对不上或者类型对不上,就会出现以上的报错信息。
java
@RequestMapping("/r2")
public String r2(String name, String password) {
return "接收参数 name: " + name + ", password: " + password;
}
