发表于: 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());

        }

    }

}

明天计划的事情:(一定要写非常细致的内容)

遇到的问题:(遇到什么困难,怎么解决的)

收获:(通过今天的学习,学到了什么知识)



返回列表 返回列表
评论

    分享到