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

如何仅生成含application/json格式的Swagger文件?

解决Swagger多响应格式导致代码生成问题的方案

直接生成仅含application/json的Swagger文件

如果Swagger文件是通过后端框架自动生成的(比如Spring Boot搭配SpringDoc/OpenAPI),可以通过配置过滤掉JSON:API格式:

  • SpringDoc/OpenAPI配置:在配置类中添加规则,移除application/vnd.api+json(JSON:API的标准MIME类型)的响应类型。示例代码:
@Configuration
public class OpenApiConfig {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .components(new Components()
                        .addResponses("default", new ApiResponse()
                                .content(new Content()
                                        .addMediaType(MediaType.APPLICATION_JSON_VALUE, new MediaType()))));
        // 也可针对特定接口或全局修改响应内容格式,移除JSON:API类型
    }
}
  • 其他后端框架:查找对应Swagger生成插件的配置项,通常都有过滤响应媒体类型的参数,比如在Maven/Gradle插件中添加参数排除JSON:API类型。

自动清理现有Swagger文件(替代手动修改)

如果无法直接控制生成源,可以写脚本自动处理Swagger JSON/YAML文件:

  • Python脚本示例:遍历Swagger文件中的responses节点,删除所有application/vnd.api+json相关内容
import json

def cleanup_swagger_file(input_path, output_path):
    with open(input_path, 'r') as f:
        swagger_data = json.load(f)
    
    # 遍历所有路径和响应
    for path in swagger_data.get('paths', {}).values():
        for operation in path.values():
            responses = operation.get('responses', {})
            for resp in responses.values():
                content = resp.get('content', {})
                # 删除JSON:API类型
                content.pop('application/vnd.api+json', None)
    
    with open(output_path, 'w') as f:
        json.dump(swagger_data, f, indent=2)

# 使用示例
cleanup_swagger_file('original-swagger.json', 'clean-swagger.json')
  • 集成到构建流程:将脚本加入Maven/Gradle的构建步骤,每次生成Swagger文件后自动执行清理,省去手动操作的重复劳动。

代码生成器层面过滤格式

如果以上两种方式都不可行,可以在代码生成时指定只处理application/json:

  • Swagger Code Generator:使用--media-types参数指定仅包含application/json
swagger-codegen generate -i swagger.json -l java --media-types application/json
  • OpenAPI Generator:同样使用--media-types参数,或在配置文件中指定
openapi-generator generate -i swagger.json -l java --media-types application/json

通过以上任一方式,都能避免手动修改Swagger文件的麻烦,从源头或生成环节解决多格式冲突导致的编译问题。

内容的提问来源于stack exchange,提问作者S4T-TP

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:01:08