在实际开发中,确实很常见需要定义一个统一的响应格式,用于封装 API 接口的返回结果。以下是一个简单的 Java 类示例,用于作为 API 响应的通用格式:
```java
public class ApiResponse<T> {
private int code; // 状态码
private String message; // 消息描述
private T data; // 返回的数据,泛型支持返回不同类型的数据
// 构造函数
public ApiResponse(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
// 无参构造函数,可能需要序列化工具链的无参构造函数
public ApiResponse() {
}
// getter 和 setter 方法
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
// 根据需要可以添加其他方法,例如用于成功的响应或错误响应的静态方法
public static <U> ApiResponse<U> success(U data) {
return new ApiResponse<>(200, "Success", data);
}
public static <U> ApiResponse<U> failure(String message) {
return new ApiResponse<>(500, message, null);
}
}
```
这个 `ApiResponse` 类是一个泛型类,可以用于封装任何类型的返回数据。它包含状态码、消息和数据三个属性。你可以定义静态方法来创建成功或失败的响应实例。
使用示例:
```java
// 创建成功的响应
ApiResponse<MyPojo> successResponse = ApiResponse.success(myPojoObject);
// 创建失败的响应
ApiResponse<?> failureResponse = ApiResponse.failure("Something went wrong");
```
在 Controller 中返回响应:
```java
@RestController
public class MyController {
@GetMapping("/my-endpoint")
public ApiResponse<MyPojo> getMyData() {
try {
MyPojo myPojo = myService.fetchData();
return ApiResponse.success(myPojo);
} catch (Exception e) {
return ApiResponse.failure("Error fetching data");
}
}
}
```
这个类可以根据你的具体需求进行扩展,例如添加时间戳、请求ID或者其他任何元数据。在大型项目中,这样的类通常会被定义在共享的库中,以便在不同的服务和模块之间重用。