如何利用Swagger V3获取Spring Boot微服务各接口的示例请求体JSON?
获取Swagger V3风格的API请求示例载荷
Swagger官方没有提供直接获取这类示例的公开API,但可以通过OpenAPI生态工具或Spring Boot集成的Springdoc组件,实现和Swagger-UI完全一致的示例生成:
基于OpenAPI模型手动生成
你可以注入OpenAPI实例,遍历所有API路径与对应操作,提取请求体的Schema对象。Swagger-UI生成示例的逻辑是:优先使用Schema中定义的example字段,其次是default值,最后根据数据类型生成虚拟值(比如字符串用"string"、整数用0、日期用标准格式示例)。你可以借助swagger-core中的ModelResolver或ExampleBuilder工具类,传入Schema对象生成符合规则的示例JSON。利用Springdoc内部能力(Spring Boot场景)
如果你使用springdoc-openapi系列依赖,它内部封装了和Swagger-UI一致的示例生成逻辑。你可以自定义一个Controller端点,通过注入ExampleGenerator(注意这是内部类,需关注版本兼容性),传入请求体的Schema直接生成示例。示例代码如下:@Autowired private OpenAPI openAPI; @Autowired private ExampleGenerator exampleGenerator; @GetMapping("/api/examples/{operationId}") public ResponseEntity<Object> getRequestExample(@PathVariable String operationId) { Operation operation = openAPI.getPaths().values().stream() .flatMap(p -> p.readOperations().stream()) .filter(op -> operationId.equals(op.getOperationId())) .findFirst() .orElseThrow(() -> new RuntimeException("Operation not found")); RequestBody requestBody = operation.getRequestBody(); if (requestBody != null && requestBody.getContent().containsKey("application/json")) { Schema schema = requestBody.getContent().get("application/json").getSchema(); Object example = exampleGenerator.generateExample(schema, Locale.getDefault()); return ResponseEntity.ok(example); } return ResponseEntity.badRequest().body("No request body found for this API"); }注意事项
- 直接依赖内部类可能随Springdoc版本更新失效,建议优先基于OpenAPI标准Schema定义实现生成逻辑,保证兼容性。
- 如果你的模型类通过
@ExampleObject或@Schema(example = "...")定义了示例值,生成结果会和Swagger-UI展示的完全一致。
内容的提问来源于stack exchange,提问作者David Decanio
相关产品推荐
相关产品推荐

