From 8a799719ff136ba341783c1b3cf0ef7d5e233f70 Mon Sep 17 00:00:00 2001 From: Lixi20 Date: Fri, 4 Sep 2026 14:51:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=93=8D=E5=BA=94=E4=BF=A1=E5=B0=81?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E6=B3=84=E9=9C=B2=E6=B4=BE=E7=94=9F=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=20success=EF=BC=8C=E4=B8=A5=E6=A0=BC=E7=AD=89?= =?UTF-8?q?=E4=BA=8E=20{code,=20message,=20data}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ApiResponse.isSuccess() 加 @JsonIgnore(common 引入 jackson-annotations,仅注解不含 databind);三波以来所有响应都多带了一个契约外的 success 字段,前端解析器忽略未知字段,无破坏 - 测试补断言 $.success doesNotExist;门禁:./mvnw clean test → BUILD SUCCESS,74 测试 0 失败 Co-Authored-By: Claude Fable 5 --- .../patbond/auth/controller/AuthControllerTest.java | 5 ++++- patbond-common/pom.xml | 6 ++++++ .../com/patbond/patbond/common/response/ApiResponse.java | 7 +++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/patbond-auth/src/test/java/com/patbond/patbond/auth/controller/AuthControllerTest.java b/patbond-auth/src/test/java/com/patbond/patbond/auth/controller/AuthControllerTest.java index 128d5ef..a6b14aa 100644 --- a/patbond-auth/src/test/java/com/patbond/patbond/auth/controller/AuthControllerTest.java +++ b/patbond-auth/src/test/java/com/patbond/patbond/auth/controller/AuthControllerTest.java @@ -110,7 +110,10 @@ class AuthControllerTest { // Frozen contract: exactly these six fields, nothing else. .andExpect(jsonPath("$.data.username").doesNotExist()) .andExpect(jsonPath("$.data.nickname").doesNotExist()) - .andExpect(jsonPath("$.data.expiresAt").doesNotExist()); + .andExpect(jsonPath("$.data.expiresAt").doesNotExist()) + // Envelope is exactly {code, message, data}: the derived + // isSuccess() getter must not leak onto the wire. + .andExpect(jsonPath("$.success").doesNotExist()); } @Test diff --git a/patbond-common/pom.xml b/patbond-common/pom.xml index 4941a2e..407afc7 100644 --- a/patbond-common/pom.xml +++ b/patbond-common/pom.xml @@ -25,6 +25,12 @@ jakarta.validation jakarta.validation-api + + + com.fasterxml.jackson.core + jackson-annotations + org.springframework.boot spring-boot-starter-test diff --git a/patbond-common/src/main/java/com/patbond/patbond/common/response/ApiResponse.java b/patbond-common/src/main/java/com/patbond/patbond/common/response/ApiResponse.java index 21dd907..1460166 100644 --- a/patbond-common/src/main/java/com/patbond/patbond/common/response/ApiResponse.java +++ b/patbond-common/src/main/java/com/patbond/patbond/common/response/ApiResponse.java @@ -1,5 +1,7 @@ package com.patbond.patbond.common.response; +import com.fasterxml.jackson.annotation.JsonIgnore; + public class ApiResponse { private Integer code; @@ -23,6 +25,11 @@ public class ApiResponse { return new ApiResponse<>(code, message, null); } + /** + * Derived convenience only — not part of the frozen wire contract + * {@code {code, message, data}}, hence never serialized. + */ + @JsonIgnore public boolean isSuccess() { return Integer.valueOf(0).equals(code); }