1、@PathVariable使用
@PathVariable
映射 URL 绑定的占位符(只能占一个参数),Spring3.0 新增的功能,通过 @PathVariable
可以将 URL 中占位符参数绑定到控制器(后端controller层的)处理方法的接收参中。
URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“)
绑定到(后端controller层中的)操作方法的接收参数中。
主要是根据请求方法进行类的区别(请求url相同,方式不同):
举例:
1、根据城市Id查询
城市,
@GetMapping(value = "/api/city/{id}")
public City findCity(@PathVariable("id") int id) {
return cityService.findCityById(id);
}
前端访问此接口url:
http://localhost:8080/api/city/需要查询城市的id
2、根据城市Id删除
城市
// 前端访问此接口url:
// http://localhost:8080/api/city/需要删除城市的id
@DeleteMapping(value = "/api/city/{id}")
public int modifyCity(@PathVariable("id") int id) {
return cityService.deleteCity(id);
}
REST支持 GET、POST、PUT、DELETE请求方式:
示例:
- /api/city/1 HTTP GET : 得到 id = 1 的城市信息
- /api/city/1 HTTP DELETE:删除 id = 1 的城市信息
- /api/city/1 HTTP PUT: 更新 id = 1 的城市信息
- /api/city/ HTTP POST: 新增城市信息
具体代码如下:
@RestController
public class CityController {
@Autowired
private CityService cityService;
//根据id查询城市信息
@GetMapping(value = "/api/city/{id}")
public City findOneCity(@PathVariable("id") int id) {
return cityService.findCityById(id);
}
//根据id删除城市信息
@DeleteMapping(value = "/api/city/{id}")
public int modifyCity(@PathVariable("id") int id) {
return cityService.deleteCity(id);
}
//查询所有城市信息
@GetMapping(value = "/api/city")
public List<City> findAllCity() {
return cityService.findAllCity();
}
//添加城市信息
@PostMapping(value = "/api/city")
public int createCity(@RequestBody City city) {
return cityService.saveCity(city);
}
//修改城市信息
@PutMapping(value = "/api/city")
public int modifyCity(@RequestBody City city) {
return cityService.updateCity(city);
}
}
2、@RequestParam使用(请求体或url后获取数据)
@RequestParam有三个配置参数:
- required 表示是否必须,默认为 true(可省略不写)。
- defaultValue 可设置请求参数的默认值(可省略不写)。
- value 为接收url的参数名(一般与接收参数名相同)。
使用如下代码所示:
@GetMapping("/user/login/")
public ResponseData UserLogin(@RequestParam(value = "username",required = true,defaultValue = "zhangsan") String username,@RequestParam(value = "pwd",required = true,defaultValue = "123456") String pwd) {
//业务代码省略
}
① @RequestParam
用来处理 Content-Type
为 application/x-www-form-urlencoded
编码的内容,Content-Type
默认为该属性。
② @RequestParam
可用于其它类型的请求,例如:POST、DELETE等请求。
③ @RequestParam
可以接受简单类型的属性,如下图所示。
缺点:不支持批量发送数据(比如不能发送集合对象)
3、@RequestBody使用(请求体中获取数据)
一般用于接收前端发送来的 json、xml格式的数据,也就是 application/json、application/xml等类型的数据。
单个对象:
前端发送 json 数据:
后端使用对象接收:
@PostMapping("/user/userLogin")
public String userLogin(@RequestBody User user) {
System.out.println(user);
return user.toString();
}
多个对象:
前端发送 json 数据:
后端使用(对象)集合接收:
@PostMapping("/user/userLogin")
public String userLogin(@RequestBody List<User> users) {
System.out.println(users);
users.forEach((user)->{
System.out.println(user);
});
return "测试";
}
结果如下: