摘要:本文学习了如何在SpringMVC中使用REST风格的请求和响应。
环境
Windows 10 企业版 LTSC 21H2
Java 1.8
Tomcat 8.5.50
Maven 3.6.3
Spring 5.2.25.RELEASE
1 Maven
需要在Maven引入相关依赖:
pom.xml1 2 3 4 5 6
| <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.1</version> </dependency>
|
实体类需要默认构造函数,或者显示声明空参构造函数。
2 Filter
默认情况只支持GET和POST请求,需要添加Filter支持其他请求类型:
java1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Filter[] getServletFilters() { CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter(); encodingFilter.setEncoding("UTF-8"); encodingFilter.setForceEncoding(true); HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter(); return new Filter[] {encodingFilter, hiddenHttpMethodFilter}; } }
|
3 Controller
按照REST风格设计请求映射:
java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| @RestController @RequestMapping("/api/user") public class UserRest { @GetMapping public CommonResult<List<User>> getUserList() { List<User> userList = new ArrayList<>(); userList.add(new User(1, "张三")); userList.add(new User(2, "李四")); return CommonResult.success(userList); } @GetMapping("/{id}") public CommonResult<User> getUser(@PathVariable Integer id) { User user = new User(id, "张三"); return CommonResult.success(user); } @PostMapping public CommonResult<User> createUser(@RequestBody @Valid User user) { return CommonResult.success(user); } @PutMapping public CommonResult<User> updateUser(@RequestBody @Valid User user) { return CommonResult.success(user); } @DeleteMapping("/{id}") public CommonResult<Integer> deleteUser(@PathVariable Integer id) { return CommonResult.success(id); } }
|
条