|
|
@@ -132,6 +132,30 @@
|
|
|
}
|
|
|
```
|
|
|
|
|
|
+### Swagger / OpenAPI:泛型返回类型的文档化(补充)
|
|
|
+
|
|
|
+说明:当接口返回自定义泛型包装类(例如项目中的 `R<T>`)或框架泛型类型(如 `ResponseEntity<T>`、`Page<T>`)时,Swagger 无法自动推断出泛型参数的具体类型,导致文档中 `data` 或 `records` 字段的结构缺失。为保证 API 文档完整、可读,建议在 Controller 层显式声明返回数据的实现类型。
|
|
|
+
|
|
|
+要点总结:
|
|
|
+- 在 Controller 方法上使用 `@Operation` / `@ApiResponse` 配合 `@Content` 和 `@Schema(implementation = XXX.class)` 明确指定返回的具体类型。这样 Swagger UI / Knife4j 能正确展示 data 中对象的字段。
|
|
|
+- 对于分页、集合等复杂泛型,创建专门用于文档说明的 VO(例如 `UserBindingPageResult`),并在注解中引用该 VO。
|
|
|
+- 为常见的 HTTP 状态码均添加 `@ApiResponse` 注解(200/400/401/403/404/500 等),提高文档的完整性。
|
|
|
+
|
|
|
+示例(参考实现):
|
|
|
+```java
|
|
|
+@Operation(summary = "检查用户绑定关系")
|
|
|
+@PostMapping("/check")
|
|
|
+@ApiResponse(responseCode = "200", description = "OK",
|
|
|
+ content = @Content(mediaType = "application/json",
|
|
|
+ schema = @Schema(implementation = CheckUserBindingResponse.class)))
|
|
|
+public R<?> check(@RequestBody CheckUserBindingRequest req) { ... }
|
|
|
+```
|
|
|
+
|
|
|
+兼容与流程建议:
|
|
|
+- 在编写或修改接口时同时更新注解,确保 API 文档与实际返回一致。
|
|
|
+- 若项目采用自动化契约测试或 API 文档校验,将 api-docs 的输出加入到 CI 校验流程中以防止文档失真。
|
|
|
+
|
|
|
+
|
|
|
## 安全考虑
|
|
|
1. **输入验证**:使用Bean Validation注解
|
|
|
2. **SQL注入防护**:使用MyBatis-Plus预编译
|