diff --git a/UserController.java b/UserController.java new file mode 100644 index 0000000..f081efe --- /dev/null +++ b/UserController.java @@ -0,0 +1,114 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ + +package com.example.web; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; + +/** + * + * @author Archer + */ +@Tag(name = "用户管理", description = "用户管理API") +@RestController +@RequestMapping(value = "/users") // 通过这里配置使下面的映射都在/users下 +public class UserController { + + // 创建线程安全的Map,模拟users信息的存储 + static Map users = Collections.synchronizedMap(new HashMap<>()); + + /** + * 处理"/users/"的GET请求,用来获取用户列表 + * + * @return + */ + @Operation(summary = "获取用户列表", description = "获取用户列表") + @GetMapping("/") + public List getUserList() { + // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递 + List r = new ArrayList<>(users.values()); + return r; + } + + /** + * 处理"/users/"的POST请求,用来创建User + * + * @param user + * @return + */ + @Operation(summary = "创建用户", description = "根据user对象创建用户") + @PostMapping("/") + public String postUser(@RequestBody User user) { + // @RequestBody注解用来绑定通过http请求中application/json类型上传的数据 + users.put(user.getId(), user); + return "success"; + } + + /** + * 处理"/users/{id}"的GET请求,用来获取url中id值的User信息 + * + * @param id + * @return + */ + @Operation(summary = "获取用户详细信息", description = "根据url的id来获取用户详细信息") + @GetMapping("/{id}") + public User getUser(@PathVariable Long id) { + // url中的id可通过@PathVariable绑定到函数的参数中 + return users.get(id); + } + + /** + * 处理"/users/{id}"的PUT请求,用来更新User信息 + * + * @param id + * @param user + * @return + */ + @Operation(summary = "更新用户详细信息", + description = "根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息", + parameters = { + @Parameter(name = "id", description = "用户ID", required = true), + @Parameter(name = "user", description = "用户详细信息", required = true) + }) + @PutMapping("/{id}") + public String putUser(@PathVariable Long id, @RequestBody User user) { + User u = users.get(id); + u.setName(user.getName()); + u.setAge(user.getAge()); + users.put(id, u); + return "success"; + } + + /** + * 处理"/users/{id}"的DELETE请求,用来删除User + * + * @param id + * @return + */ + @Operation(summary = "删除用户", description = "根据url的id来指定删除对象") + @DeleteMapping("/{id}") + public String deleteUser(@PathVariable Long id) { + users.remove(id); + return "success"; + } + +} \ No newline at end of file