首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提供的定义在呈现openapi时没有指定有效的版本字段。

提供的定义在呈现openapi时没有指定有效的版本字段。
EN

Stack Overflow用户
提问于 2022-06-03 06:29:26
回答 1查看 1.9K关注 0票数 1

我正在将OpenAPI与我的项目集成在一起,当我访问url:http://127.0.0.1:11014/swagger-ui/index.html时,会显示如下错误:

代码语言:javascript
运行
复制
Unable to render this definition
The provided definition does not specify a valid version field.

Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: "2.0" and those that match openapi: 3.0.n (for example, openapi: 3.0.0).

这是OpenAPI配置:

代码语言:javascript
运行
复制
package misc.config.openapi;

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * https://springdoc.org/
 * https://github.com/springdoc/springdoc-openapi
 */
@Configuration
public class OpenApiConfig {

    @Bean
    public GroupedOpenApi fortuneApi() {
        GroupedOpenApi.Builder builder = GroupedOpenApi.builder()
                .pathsToMatch("/fortune/**")
                .group("dddd");
        GroupedOpenApi groupedOpenApi = builder.build();
        return groupedOpenApi;
    }

    @Bean
    public OpenAPI fortuneAPI() {
        return new OpenAPI()
                .info(new Info().title("Fortune API")
                        .description("Spring shop sample application")
                        .version("v0.0.1")
                        .license(new License().name("Apache 2.0").url("http://springdoc.org")))
                .externalDocs(new ExternalDocumentation()
                        .description("SpringShop Wiki Documentation")
                        .url("https://springshop.wiki.github.org/docs"));
    }

}

我读过Swagger..Unable to render this definition The provided definition does not specify a valid version field的问题,并尝试了答案,两者都不起作用。我应该怎么做才能指定版本?如下所示的依赖关系:

代码语言:javascript
运行
复制
    api "org.springdoc:springdoc-openapi-ui:1.6.9"

我做了一个最小的复制,发现正常的响应是json对象,但是问题响应返回字符串。这是正确的反应:

代码语言:javascript
运行
复制
{
    "openapi": "3.0.1",
    "info": {
        "title": "Fortune API",
        "description": "Spring shop sample application",
        "license": {
            "name": "Apache 2.0",
            "url": "http://springdoc.org"
        },
        "version": "v0.0.1"
    },
    "externalDocs": {
        "description": "SpringShop Wiki Documentation",
        "url": "https://springshop.wiki.github.org/docs"
    },
    "servers": [
        {
            "url": "http://127.0.0.1:11018",
            "description": "Generated server url"
        }
    ],
    "paths": {},
    "components": {}
}

这是我的项目中的问题响应:

代码语言:javascript
运行
复制
"{\"openapi\":\"3.0.1\",\"info\":{\"title\":\"Fortune API\",\"description\":\"Spri......
EN

回答 1

Stack Overflow用户

发布于 2022-06-04 05:48:45

最后,我发现我更改了json转换器导致了这个问题,这是一个解决方法:

代码语言:javascript
运行
复制
@EnableWebMvc
@Configuration
public class WebConvertConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        converters.add(new StringHttpMessageConverter());
    }
}

这个StringHttpMessageConverter应该是第一个添加到转换器中的。我认为这是openapi的设计问题,使它难以使用。更多来自这里的信息:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72485521

复制
相关文章

相似问题

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