You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
3.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* 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<Long, User> users = Collections.synchronizedMap(new HashMap<>());
/**
* 处理"/users/"的GET请求用来获取用户列表
*
* @return
*/
@Operation(summary = "获取用户列表", description = "获取用户列表")
@GetMapping("/")
public List<User> getUserList() {
// 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递
List<User> 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";
}
}