这里用了一款接口测试软件postman
简单参数
SpringBoot方式
简单参数:参数名与形参变量名相同,定义形参即可接收参数。
请求参数名与方法形参变量名相同
会自动进行类型转换
java
package com.example.springbootwebreqresp.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RequestController {
@RequestMapping("/simpleParm")
public String simpleParm(String name,Integer age){
System.out.println(name+":"+age);
return "OK";
}
}
postman接口测试👇
控制台也输出了获取的
下面是post请求
依旧可以返回
如果参数对应不上呢?👇
这说明只要参数对应的上就能接收成功,参数对应不上接收就不成功,但不会报错
如果方法形参名称与请求参数名称不匹配,可以使用 @Requestparam 完成映射。
@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false。
我给name前面的√取消掉
客户端错误
@RequestParam中的required属性默认为true,代表请求参数必须传递,如果不传递将报错。
报错👇
required👇
这样去测试的话👇
就不会报错了
只获取了age的值
实体参数
简单实体对象:
请求参数名与形参对象属性名相同,定义POJO接收即可
java
@RestController
public class RequestController {
@RequestMapping("/simplePojo")
public String simplePojo(User user){
System.out.println(user);
return "OK";
}
}
复杂实体对象:
请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJ0属性参数。
java
@RestController
public class RequestController {
@RequestMapping("/complexPojo")
public String complexPojo(User user){
System.out.println(user);
return "OK";
}
}
数组集合参数
数组参数
java
@RestController
public class RequestController {
@RequestMapping("/arrParam")
public String arrParam(String[] hobby){
System.out.println(Arrays.toString(hobby));
return "OK";
}
}
集合参数
请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系
java
@RequestMapping("/listParam")
public String listParam(@RequestParam List<String> hobby){
System.out.println(hobby);
return "OK";
}
日期参数
日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换
java
@RequestMapping("/dateParam")
public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDate updateTime){
System.out.println(updateTime);
return "OK";
}
json参数
java
@RequestMapping("/jsonParam")
public String jsonParam(@RequestBody User user){
System.out.println(user);
return "OK";
}
路径参数
路径参数:通过请求URL直接传递参数,使用{..}来标识该路径参数,需要使用 @PathVariable 获取
java
@RequestMapping("/path/{id}")
public String pathParam(@PathVariable Integer id){
System.out.println(id);
return "OK";
}
传递多个路径参数 👇
java
@RequestMapping("/path/{id}/{name}")
public String pathParam2(@PathVariable Integer id,@PathVariable String name){
System.out.println(id+":"+name);
return "OK";
}
@ResponseBody 注解
类型:方法注解、类注解
位置:Controller方法上/类上
作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式
响应说明:@RestController=@Controller+ @ResponseBody;