在 Linux 下调试 Swagger(通常指 Swagger UI / OpenAPI),常见场景有几种,我按最常用 → 进阶给你系统讲一下,基本都能覆盖 90% 的需求。
浏览器访问:
http://localhost:8080/swagger-ui.html
# 或
http://localhost:8080/swagger-ui/index.html
如果打不开:
curl http://localhost:8080/swagger-ui.html
✅ 能返回 HTML → 服务正常
❌ 连接拒绝 → 服务没启动或端口不对
Swagger UI 本质读取的是 OpenAPI JSON:
curl http://localhost:8080/v3/api-docs
或:
curl http://localhost:8080/v2/api-docs
如果返回 JSON,说明 后端 OK
如果 404 → 配置问题
重点看:
常见错误:
| 现象 | 原因 |
|---|---|
| 403 | 权限 / Spring Security |
| 401 | 未登录 / Token |
| 404 | 路径不匹配 |
| 500 | 后端异常 |
| CORS 报错 | 跨域问题 |
Swagger UI 点“Try it out”本质就是发 HTTP 请求。
curl -X GET "http://localhost:8080/api/user/1" \
-H "accept: application/json"
带 Token:
curl -X GET "http://localhost:8080/api/user/1" \
-H "Authorization: Bearer xxx"
✅ 能通 → Swagger UI 配置问题
❌ 不通 → 后端问题
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.x.x</version>
</dependency>
或老版本:
springfox-boot-starter
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers(
"/swagger-ui/**",
"/v3/api-docs/**",
"/swagger-resources/**"
).permitAll()
.anyRequest().authenticated();
}
netstat -tunlp | grep 8080
# 或
ss -tunlp | grep 8080
确认:
0.0.0.0 还是 127.0.0.1docker ps
docker exec -it 容器id sh
curl http://localhost:8080/swagger-ui.html
http://宿主机IP:映射端口/swagger-ui.html
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info().title("API").version("1.0"));
}
浏览器 Network → 查看 Response 内容
✅ 服务是否启动
✅ /v3/api-docs 是否返回 JSON
✅ 是否被 Spring Security 拦截
✅ 是否跨域(CORS)
✅ 端口 / Docker / 防火墙
✅ curl 能否直接调通接口
你可以直接贴:
我可以一步一步帮你把问题定位到“哪一行配置”。