首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将自定义json对象添加到SpringBoot SpringDoc生成的Openapi规范中?

如何将自定义json对象添加到SpringBoot SpringDoc生成的Openapi规范中?
EN

Stack Overflow用户
提问于 2022-02-17 10:22:32
回答 1查看 524关注 0票数 0

我的springboot项目使用SpringDoc生成openapi规范。我想将一个json对象添加到生成的规范中。

代码语言:javascript
运行
复制
{
    "api-definition": {
      "priority": 1,
      "owner: "jack"
    }
}

这样,生成的spec文件看起来就像

代码语言:javascript
运行
复制
{"openapi":"3.0.1",

  ................

  ................

  "api-definition": {
      "priority": 1,
      "owner: "jack"
  }
}

有人能帮忙吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-16 17:05:49

我能够通过创建一个OpenApiCustomiser bean来做到这一点。

代码语言:javascript
运行
复制
@Configuration
public class OpenApiConfig {

@Bean
public OpenApiCustomiser customise() {
    return openApi -> {
        try {
            openApi.setExtensions(vendorExtensions());
        } catch (JsonProcessingException e) {
            log.error("bad json, should never happen");
        }
    };
}

private static ObjectMapper mapper = new ObjectMapper();

private Map<String, Object> vendorExtensions() throws JsonProcessingException {
    MapType type = mapper.getTypeFactory().constructMapType(
            Map.class, String.class, Object.class);
    Map<String, Object> stringObjectMap = new HashMap<>();

    stringObjectMap.put("api-definition",
            mapper.readValue(readFile("api-definition.json"), type));
    return stringObjectMap;
}

//To read file from resources folder
private String readFile(String fileName) {
    ClassLoader classLoader = getClass().getClassLoader();
    try {
        return Files.readString(Path.of(classLoader.getResource(fileName).getFile()));
    } catch (IOException ex) {
        log.error(ex.getMessage());
    }
    return null;
}

}

below如下所示

代码语言:javascript
运行
复制
{ 
  "priority": 1,
  "owner: "jack"
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71156280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档