无效的 swagger 请求路径

Invalid swagger request path

我正在使用 springdoc 并尝试在我的项目中配置 swagger。我有一个身份验证端点,想在 swagger ui 页面上执行请求。 Swagger 正确显示端点路径:/api/v1/auth,但是当我尝试在“试用”菜单中执行请求时,它会将请求发送到 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")));
    }
}

提前感谢您的帮助

问题是由于您将服务器 URL 设置为 localhost 而不是 http://localhost

当你在没有协议的情况下指定路径时,它总是被认为是页面当前 URL 的相对路径,在这种情况下是 http://localhost:8080/v3/api-docs.

更新您的 OpenAPI Bean 以反映 URL with 协议应该可以解决问题。

@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