springboot 控制器
文章目录
- springboot 控制器
- 1.Controller和RestController
- **Controller:数据和页面**
- **RestController:数据**
- 所以我们的controller一般在springmvc中使用,返回页面,但是现在的项目基本上都是前后端分离项目,可以多使用RestController
- 也就是说,RequestMapping是一个标准的写法,可以替换GetMapping等,如以下代码
- 也就是说,以下两个方式是等同的,post、delete、update等类推
- 2.参数传递
- @RequestParam:把传送参数绑定到方法上
- 1.当传送参数名称和方法一样时,可以省略
- 反之不可以
- post方法测试参数传递
- @PathVaraible
- @PathVariable 是 Spring MVC 中用于处理 RESTful Web 服务时的一个注解,它允许你从 URL 中提取变量值,并将这些值绑定到控制器处理方法的参数上。这个注解通常与 @RequestMapping 或其派生注解(如 @GetMapping、@PostMapping 等)一起使用,来指定哪些请求路径和方法应该被映射。
- @RequestBody
- 当我们需要接受一个json的数据时,可以使用这样一个注解
- 接口写法:
- 测试写法:
1.Controller和RestController
Controller:数据和页面
RestController:数据
所以我们的controller一般在springmvc中使用,返回页面,但是现在的项目基本上都是前后端分离项目,可以多使用RestController
也就是说,RequestMapping是一个标准的写法,可以替换GetMapping等,如以下代码
package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {//标准写法@RequestMapping(value = "/bz",method = RequestMethod.GET)public String bz(){return "bz!!";}//任何一种访问方式都行@RequestMapping("/any")public String any(){return "any!!";}//get访问方式@GetMapping("/hello")public String hello(){return "hello啊书法大赛 world!";}
}
也就是说,以下两个方式是等同的,post、delete、update等类推
2.参数传递
@RequestParam:把传送参数绑定到方法上
1.当传送参数名称和方法一样时,可以省略
java"> @GetMapping("/hello")public String hello(String nikename){return nikename+"你好";}
反之不可以
java"> @GetMapping("/hello")public String hello(@RequestParam(value = "nikename") String name){return name+"你好";}
post方法测试参数传递
java">//Post测试参数传递@RequestMapping(value = "/test",method = RequestMethod.POST)public String test(String name,String password){return name + password;}
这个时候我们不能单独的在浏览器测试了,需要借助postman或者是其他软件模拟浏览器发送请求,因为在输入栏我们无法传递post请求。
我这里借助idea自带的http文件测试接口
java">###
POST http://localhost:8080/test
Content-Type: application/x-www-form-urlencodedname=John+Doe&password=30<> 2024-09-23T090528.200.txt
对应的post接口
当我们使用这样的方式去传递类数据时,也是直接按照类里的各个属性,传送参数要和类里的各个属性名相同,这样代码会自动帮我们匹配,例:
java"> //Post测试参数(使用json发送多个参数,或者类参数)@RequestMapping(value = "/test1",method = RequestMethod.POST)public User test1(User user){System.out.println(user.getName());return user;}
对应的测试接口写法
java">POST http://localhost:8080/test1
Content-Type: application/x-www-form-urlencodedid=1&name=king&phone=1841891561
@PathVaraible
@PathVariable 是 Spring MVC 中用于处理 RESTful Web 服务时的一个注解,它允许你从 URL 中提取变量值,并将这些值绑定到控制器处理方法的参数上。这个注解通常与 @RequestMapping 或其派生注解(如 @GetMapping、@PostMapping 等)一起使用,来指定哪些请求路径和方法应该被映射。
java">@RestController
@RequestMapping("/users")
public class UserController { @GetMapping("/{userId}") public User getUserById(@PathVariable("userId") Long userId) { // 这里根据userId获取用户信息,并返回User对象 // 示例代码,实际情况需要替换为真实的用户数据获取逻辑 return new User(userId, "John Doe"); }
}
@RequestBody
当我们需要接受一个json的数据时,可以使用这样一个注解
例:
接口写法:
java"> //Post测试参数(使用json发送多个参数,或者类参数)@RequestMapping(value = "/test2",method = RequestMethod.POST)public User test2(@RequestBody User user){System.out.println(user);return user;}
}
测试写法:
java">POST http://localhost:8080/test2
Content-Type:application/json{"id": 1,"name": "king","phone": 18474314
}