【Java学习】API接口数据规范
常见的HTTP状态码有:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
#返回状态码
Code:integer,
#返回信息描述
message:string,
#返回值
data:object
}
public interface IResultStatus { /** * 状态码 * @return */ Integer errorCode(); /** * 异常信息 * @return */ String errorMsg(); }
public enum ResultStatus implements IResultStatus { /** * 状态码及对应信息 */ //成功状态码 SUCCESS(0, "执行成功"), //参数错误:1001~1999 PARAM_IS_INVALID(1001, "参数无效"), PARAM_IS_BLANK(1002, "参数为空"), PARAM_TYPE_BIND_ERROR(1003, "参数类型错误"), //用户错误:2001~2999 USER_LOGIN_ERROR(2001, "账号不存在或密码错误"), USER_ACCOUNT_FORBIDDEN(2002, "账户已被禁用"), USER_NOT_EXIST(2003, "用户不存在"); private int errorCode; private String errorMsg; ResultStatus(int errorCode, String errorMsg) { this.errorCode = errorCode; this.errorMsg = errorMsg; } @Override public Integer errorCode() { return errorCode; } @Override public String errorMsg() { return errorMsg; } }
@Data public class Result<T> { private Integer code; private String message; private Object data; public Result(ResultStatus restStatus, Object data) { this.code = restStatus.errorCode(); this.message = restStatus.errorMsg(); this.data = data; } /** * 业务成功返回业务代码和描述信息 */ public static Result<Void> success() { return new Result<Void>(ResultStatus.SUCCESS, null); } /** * 业务成功返回业务代码,描述和返回的参数 */ public static <T> Result<T> success(T data) { return new Result<T>(ResultStatus.SUCCESS, data); } /** * 业务成功返回业务代码,描述和返回的参数 */ public static <T> Result<T> success(ResultStatus resultStatus, T data) { if (resultStatus == null) { return success(data); } return new Result<T>(resultStatus, data); } /** * 业务异常返回业务代码和描述信息 */ public static <T> Result<T> failure() { return new Result<T>(ResultStatus.PARAM_TYPE_BIND_ERROR, null); } /** * 业务异常返回业务代码,描述和返回的参数 */ public static <T> Result<T> failure(ResultStatus resultStatus) { return failure(resultStatus, null); } /** * 业务异常返回业务代码,描述和返回的参数 */ public static <T> Result<T> failure(ResultStatus resultStatus, T data) { if (resultStatus == null) { return new Result<T>(ResultStatus.PARAM_IS_INVALID, null); } return new Result<T>(resultStatus, data); } }
@RestController @RequestMapping("/api/demo2") public class Demo2Controller { private static final HashMap<String, Object> INFO; static { INFO = new HashMap<>(); INFO.put("name", "张三"); INFO.put("age", "25"); } @GetMapping("/getInfo") public Map<String, Object> getInfo() { return INFO; } @GetMapping("/getInfoResult") public Result<Map<String, Object>> getInfoResult() { return Result.success(INFO); } }
结果参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异