You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:38:26