From 9e0729f6f5bb64793324c0d53440011a12e268b6 Mon Sep 17 00:00:00 2001 From: wangxiu <1422795692@qq.com> Date: Fri, 10 Jul 2026 23:46:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=B3=BB=E7=BB=9F=E5=86=85?= =?UTF-8?q?=E9=83=A8=E5=BC=82=E5=B8=B8=E7=9A=84=E5=93=8D=E5=BA=94=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/docking/exception/ErrorResponse.java | 28 ++++++++++++++----- .../exception/GlobalExceptionHandler.java | 6 ++-- 对接接口文档.md | 24 +++++++++------- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/lyxh/api/docking/exception/ErrorResponse.java b/src/main/java/com/lyxh/api/docking/exception/ErrorResponse.java index 5ee913b..6603728 100644 --- a/src/main/java/com/lyxh/api/docking/exception/ErrorResponse.java +++ b/src/main/java/com/lyxh/api/docking/exception/ErrorResponse.java @@ -1,17 +1,31 @@ package com.lyxh.api.docking.exception; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; -import java.time.Instant; +import org.apache.commons.codec.digest.DigestUtils; + +import java.util.UUID; @Data public class ErrorResponse { - private final String error; - private final String message; - private final String timestamp; - public ErrorResponse(String error, String message) { - this.error = error; + private final String code; + private final String message; + private final String responseId; + private final DataNode data; + + public ErrorResponse(String code, String message) { + this.code = code; this.message = message; - this.timestamp = Instant.now().toString(); + this.responseId = DigestUtils.md5Hex(UUID.randomUUID().toString()); + this.data = new DataNode(); + } + + @Data + public static class DataNode { + private final int status = 0; + + @JsonProperty("result") + private final Object result = null; } } diff --git a/src/main/java/com/lyxh/api/docking/exception/GlobalExceptionHandler.java b/src/main/java/com/lyxh/api/docking/exception/GlobalExceptionHandler.java index e5ba3ab..46b95a5 100644 --- a/src/main/java/com/lyxh/api/docking/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/lyxh/api/docking/exception/GlobalExceptionHandler.java @@ -20,7 +20,7 @@ public class GlobalExceptionHandler { .reduce((a, b) -> a + "; " + b) .orElse("validation failed"); return ResponseEntity.badRequest() - .body(new ErrorResponse("VALIDATION_ERROR", msg)); + .body(new ErrorResponse("400", msg)); } @ExceptionHandler(ApiCallException.class) @@ -34,13 +34,13 @@ public class GlobalExceptionHandler { String detail = ex.getResponseBody() != null && !ex.getResponseBody().isEmpty() ? ex.getResponseBody() : ex.getMessage(); return ResponseEntity.status(status) - .body(new ErrorResponse(ex.getCode(), detail)); + .body(new ErrorResponse(String.valueOf(status.value()), detail)); } @ExceptionHandler(Exception.class) public ResponseEntity handleGeneral(Exception ex) { log.error("Unexpected error", ex); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(new ErrorResponse("INTERNAL_ERROR", "Internal server error")); + .body(new ErrorResponse("500", "Internal server error")); } } diff --git a/对接接口文档.md b/对接接口文档.md index da4b07a..f9c7e23 100644 --- a/对接接口文档.md +++ b/对接接口文档.md @@ -105,22 +105,26 @@ ## 错误响应 -统一错误格式: +错误响应与三方接口响应保持相同结构,其中`data` 中 `status=0`、`result=null`: ```json { - "error": "ERROR_CODE", - "message": "错误描述", - "timestamp": "2026-07-08T10:30:00Z" + "code": "503", + "message": "External API unreachable after 1 attempts", + "responseId": "a1b2c3d4e5f6789012345678abcdef01", + "data": { + "status": 0, + "result": null + } } ``` -| HTTP状态码 | error | 说明 | -|---|---|------------------| -| 400 | VALIDATION_ERROR | 请求参数校验失败 | -| 502 | HTTP_ERROR | 三方 API HTTP 错误 | -| 503 | NETWORK_ERROR | 三方 API 网络不可达 | -| 500 | INTERNAL_ERROR | 服务内部未知异常 api配置信息未找到 | +| HTTP状态码 | code | 说明 | +|---|---|---| +| 400 | 400 | 请求参数校验失败 | +| 502 | 502 | 三方 API HTTP 错误 | +| 503 | 503 | 三方 API 网络不可达 | +| 500 | 500 | 服务内部未知异常 | ## 完整调用示例