发表于: 2025-05-15 20:51:00
0 3
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
17.用Spring messageSource 配置错误信息,在接口处做校验,根据错误的类型返回对应的错误信息
配置ErrorMessage
package org.example.model;
public enum ErrorMessage {
// 系统通用错误
SUCCESS(0, "成功"),
SYSTEM_ERROR(500, "系统错误"),
// 用户相关错误 (4xx系列)
USER_NOT_FOUND(404, "用户不存在"),
INVALID_PARAMETER(400, "参数错误"),
CREATE_USER_FAILED(4001, "创建用户失败"),
UPDATE_USER_FAILED(4002, "更新用户失败"),
DELETE_USER_FAILED(4003, "删除用户失败"),
// 业务相关错误 (5xx系列)
BUSINESS_ERROR(5001, "业务处理异常");
private final int code;
private final String message;
ErrorMessage(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
// 通过code获取枚举实例
public static ErrorMessage fromCode(int code) {
for (ErrorMessage error : values()) {
if (error.code == code) {
return error;
}
}
return SYSTEM_ERROR; // 默认返回系统错误
}
}
修改apiresponse
package org.example.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
public class ApiResponse<T> implements Serializable {
@JsonProperty("code")
private Integer statusCode;
@JsonProperty("msg")
private String message;
@JsonProperty("date")
private T date;
// 无参构造
public ApiResponse() {}
// 全参构造
private ApiResponse(Integer statusCode, String message, T date) {
this.statusCode = statusCode;
this.message = message;
this.date = date;
}
/* 增强的工厂方法 */
public static <T> ApiResponse<T> success(T data) {
return new ApiResponse<>(ErrorMessage.SUCCESS.getCode(), ErrorMessage.SUCCESS.getMessage(), data);
}
public static ApiResponse<Void> success() {
return success(null);
}
public static <T> ApiResponse<T> error(ErrorMessage error) {
return new ApiResponse<>(error.getCode(), error.getMessage(), null);
}
public static <T> ApiResponse<T> error(ErrorMessage error, String customMessage) {
return new ApiResponse<>(error.getCode(), customMessage, null);
}
public static <T> ApiResponse<T> error(int code, String message) {
return new ApiResponse<>(code, message, null);
}
/* Getter方法保持不变 */
public Integer getStatusCode() {
return statusCode;
}
public String getMessage() {
return message;
}
public T getDate() {
return date;
}
}
修改
package org.example.controller;
import org.example.model.ApiResponse;
import org.example.model.ErrorMessage;
import org.example.model.User;
import org.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
// 查询用户 - 仅修改错误返回
@GetMapping("/{id}")
public ApiResponse<User> getUser(@PathVariable Integer id) {
User user = userService.getUserById(id);
if (user != null) {
return ApiResponse.success(user);
} else {
return ApiResponse.error(ErrorMessage.USER_NOT_FOUND.getCode(),
ErrorMessage.USER_NOT_FOUND.getMessage());
}
}
// 创建用户 - 仅修改错误返回
@PostMapping("/")
public ApiResponse<Map<String, Object>> createUser(@RequestBody User user) {
try {
int result = userService.addUser(user);
if (result > 0) {
Map<String, Object> response = new HashMap<>();
response.put("id", user.getId());
return ApiResponse.success(response);
} else {
return ApiResponse.error(ErrorMessage.CREATE_USER_FAILED.getCode(),
ErrorMessage.CREATE_USER_FAILED.getMessage());
}
} catch (Exception e) {
return ApiResponse.error(ErrorMessage.INVALID_PARAMETER.getCode(),
ErrorMessage.INVALID_PARAMETER.getMessage() + ": " + e.getMessage());
}
}
// 更新用户 - 仅修改错误返回
@PutMapping("/{id}")
public ApiResponse<Map<String, Object>> updateUser(@PathVariable Integer id, @RequestBody User user) {
try {
user.setId(id);
int result = userService.updateUser(user);
if (result > 0) {
Map<String, Object> response = new HashMap<>();
response.put("id", id);
return ApiResponse.success(response);
} else {
return ApiResponse.error(ErrorMessage.UPDATE_USER_FAILED.getCode(),
ErrorMessage.UPDATE_USER_FAILED.getMessage());
}
} catch (Exception e) {
return ApiResponse.error(ErrorMessage.INVALID_PARAMETER.getCode(),
ErrorMessage.INVALID_PARAMETER.getMessage() + ": " + e.getMessage());
}
}
// 删除用户 - 仅修改错误返回
@DeleteMapping("/{id}")
public ApiResponse<Void> deleteUser(@PathVariable Integer id) {
int result = userService.deleteUser(id);
if (result > 0) {
return ApiResponse.success();
} else {
return ApiResponse.error(ErrorMessage.DELETE_USER_FAILED.getCode(),
ErrorMessage.DELETE_USER_FAILED.getMessage());
}
}
}
明天计划的事情:(一定要写非常细致的内容)
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
评论