CustomResponse.java.md
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ApiResponse<T> implements Serializable {
private static final long serialVersionUID = 1L;
private int code;
private String message;
private boolean success;
private T data;
}
package com.fedoubt.common.message;
import org.springframework.http.ResponseEntity;
public class ResponseUtils {
public static <T> ApiResponse<T> success(int code, String message, T data) {
return ApiResponse.<T>builder().code(code).message(message).success(true).data(data).build();
}
public static <T> ApiResponse<T> success(int code, T data) {
return success(code, "系統成功", data);
}
public static <T> ApiResponse<T> success(T data) {
return success(200, data);
}
public static <T> ApiResponse<T> success() {
return ApiResponse.<T>builder().code(200).success(true).build();
}
public static <T> ApiResponse<T> error(int code, String message) {
return ApiResponse.<T>builder().code(code).message(message).success(false).build();
}
public static <T> ApiResponse<T> error(int code, String message, T data) {
return ApiResponse.<T>builder().code(code).message(message).success(false).data(data).build();
}
public static <T> ApiResponse<T> error(int code, T data) {
return error(code, "系統錯誤", data);
}
public static <T> ApiResponse<T> error(T data) {
return error(500, data);
}
public static <T> ApiResponse<T> error() {
return ApiResponse.<T>builder().code(500).success(false).build();
}
public static <T> ResponseEntity<ApiResponse<T>> customResponse(ApiStatus httpStatus){
return ResponseEntity.ok(
error(
httpStatus.value(),
httpStatus.getReasonPhrase()
)
);
}
public static <T> ResponseEntity<ApiResponse<T>> handleCustomException(int code, String message) {
return ResponseEntity.status(code)
.body(error(code, message));
}
}