无效的招摇过市请求路径

a0zr77ik  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(294)

我正在使用springdoc并尝试在我的项目中配置swagger。我有一个身份验证端点,想在swaggerui页面执行请求。swagger正确显示端点路径: /api/v1/auth ,但当我试图在“try it out”菜单执行请求时,它会将请求发送到 http://localhost:8080/v3/api-docs/localhost/api/v1/auth .
以下是示例:


下面是我在swagger中生成的curl连接字符串:

curl -X 'POST' \
  'http://localhost:8080/v3/api-docs/localhost/api/v1/auth' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "username": "string",
  "password": "string"
}'

和配置bean:

@Configuration
public class SwaggerConfiguration {
    @Bean
    public GroupedOpenApi publicUserApi() {
        return GroupedOpenApi.builder()
                .group("Api")
                .pathsToMatch("/api/**")
                .build();
    }

    @Bean
    public OpenAPI customOpenApi() {
        return new OpenAPI()
                .info(new Info().title("Application API"))
                .servers(List.of(new Server().url("localhost").description("Server")));
    }
}

提前谢谢你的帮助

xesrikrc

xesrikrc1#

问题是由于您将服务器url设置为 localhost 而不是 http://localhost 当您在没有协议的情况下指定路径时,它总是作为页面当前url的相对路径,在本例中是 http://localhost:8080/v3/api-docs .
用协议更新openapi bean以反映url应该可以解决这个问题。

@Bean
public OpenAPI customOpenApi() {
    return new OpenAPI()
            .info(new Info().title("Application API"))
            .servers(List.of(new Server().url("http://localhost:8080").description("Server")));
}

我已将端口号明确指定为 8080 为了清楚起见。

相关问题