@ResponseBody:这个注解会将你的返回值自动转成JSON格式
@RequestBody:这个注解接收的是JSON格式的传参,如果传参是JSON格式就要打上这个
@GetMapping():这个代表Get方式的请求,如果参数名称、参数个数或请求方式不对应就会请求失败
@PostMapping():这个代表Post方式的请求
@RequestMapping():这个是Get和Post方式的结合,系统会自动匹配Get或Post方式
搭好springboot环境,可以参照之前的环境搭建
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@GetMapping(value = "/test")//Get请求 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public String test( String value){//请求参数为value
return value;//直接将参数返回
}
}
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@GetMapping(value = "/test")//Get请求 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public String test(String value, Integer id,String date){//请求参数为value
System.out.println("value值---->"+value);
System.out.println("id值---->"+String.valueOf(id));
System.out.println("date值---->"+String.valueOf(date));
return "请求成功";
}
}
1.环境依旧用相同的,提前建立好一个测试的实体类
User实体类:(这边是用lombot插件自动生成了set和get方法,没有的请手动添加set和get方法)
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@PostMapping(value = "/test")//Post请求 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public String test(Integer[] ids,String[] values){//请求参数
System.out.println("Integer数组传参如下:");
for (Integer id:ids){
System.out.println("---->"+id);
}
System.out.println("String数组传参如下:");
for (String value:values){
System.out.println("---->"+value);
}
return "请求成功";
}
}
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@PostMapping(value = "/test")//Post请求 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public User test(User user){//请求参数
System.out.println(user.toString());
return user;
}
}
传参及测试结果:
这里可以看出Post请求中参数是自动对应的,而且是可以不写的,不写自动为空,而Get则会直接请求失败
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@PostMapping(value = "/test")//Post请求 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public User test(@RequestBody User user){//请求参数 //json传参需要加@RequestBody
System.out.println(user.toString());
return user;
}
}
传参及结果:
如果所传数据是json则请求头需要设置Content-Type:application/json,我用的测试工具是postman,所以这样设置:
值则是以json格式写在body里面
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@PostMapping(value = "/test")//Post请求 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public List<User> test(@RequestBody List<User> user){//请求参数 //json传参需要加@RequestBody
for (User user1:user){
System.out.println(user1.toString());
}
return user;
}
}
实际情况中可能会经常遇到一对多的嵌套关系,比如:一个班级有多个学生、一个订单号对应多个产品。。。。
首先我们新建一个实体类
ClassBean
controller代码如下
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@PostMapping(value = "/test")//Post请求 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public ClassBean test(@RequestBody ClassBean classBean){//请求参数 //json传参需要加@RequestBody
System.out.println("id:"+classBean.getId());
System.out.println("teacherName"+classBean.getTeacherName());
System.out.println("user如下:");
for (User user:classBean.getUsers()){
System.out.println(user);
}
return classBean;
}
}
@Controller//这个代表Controller层注解
public class DemoController
{
@ResponseBody//返回值转成JSON格式
@RequestMapping(value = "/test/{name}")//这个会自动对应请求类型 value值代表请求路径 例如这个的最后请求路径就是http://localhost:8080/test
public String test(@PathVariable("name") String name){//请求参数
System.out.println(name);
return name;
}
}