无效的 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
。
我正在使用 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
。