在spring boot的controller层中,构建一套符合restful风格的api接口。
接口的设计如下:
请求类型 | URL | 功能说明 |
---|---|---|
Get | /user | 查询所有用户列表 |
Post | /users | 新增User |
Get | /users/id | 通过主键id查询user信息 |
Put | /users/id | 通过主键id更新User信息 |
Delete | /users/id | 通过主键id来删除User |
定义user相关实体
UserDO
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserDO {
/**
* 主键id
* */
private Long id;
/**
* 用户名
* */
private String name;
/**
* 年龄
* */
private Integer age;
}
AI 代码解读
UserRequest
@Data
public class UserRequest {
/**
* 主键id
* */
private Long id;
/**
* 用户名
* */
private String name;
/**
* 年龄
* */
private Integer age;
}
AI 代码解读
UserResponse
@Data
public class UserResponse {
/**
* 主键id
* */
private Long id;
/**
* 用户名
* */
private String name;
/**
* 年龄
* */
private Integer age;
}
AI 代码解读
实现对user的CRUD操作
UserController
@RestController
@RequestMapping("/user")
public class UserController {
/**
* 创建线程安全的Map,用于模拟user信息的存储
*/
static Map users = Collections.synchronizedMap(new HashMap());
/**
* 处理"/user/"的get请求
* 查询所有用户列表
*/
@GetMapping("/")
public Result> getUserList() {
List list = new ArrayList<>(UserController.users.values());
List result = Converter.convert(list, UserResponse.class);
return Result.success(result);
}
/**
* 处理"/users/"的POST请求
* 新增User
* RequestBody注解用来绑定通过http请求中application/json类型上传的数据
*/
@PostMapping("/")
public Result postUser(@RequestBody UserRequest userRequest) {
UserDO user = Converter.convert(userRequest, UserDO.class);
users.put(userRequest.getId(), user);
return Result.success(true);
}
/**
* 处理"/users/{id}"的GET请求
* 通过主键id查询user信息
*/
@GetMapping("/{id}")
public Result getUserById(@PathVariable Long id) {
UserDO user = users.get(id);
UserResponse result = Converter.convert(user, UserResponse.class);
return Result.success(result);
}
/**
* 处理"/users/{id}"的PUT请求
* 通过主键id更新User信息
*/
@PutMapping("/{id}")
public Result putUser(@PathVariable Long id, @RequestBody UserRequest userRequest) {
UserDO u = users.get(id);
u.setName(userRequest.getName());
u.setAge(userRequest.getAge());
users.put(id, u);
return Result.success(true);
}
/**
* 处理"/users/{id}"的DELETE请求
* 通过主键id来删除User
*/
@DeleteMapping("/{id}")
public Result deleteUser(@PathVariable Long id) {
users.remove(id);
return Result.success(true);
}
}
AI 代码解读