Connexion部署后无法访问Swagger UI及对应接口问题求助
问题原因
- OpenAPI配置的
servers字段和实际运行环境不匹配
你helloworld-api.yaml中配置的servers.url为http://localhost:9090/swagger,相当于给所有API加上了/swagger路径前缀,且声明的服务端口为9090,但你实际启动服务用的是8080端口,配置和运行环境完全不符,导致所有路由匹配失败。 - Swagger UI默认访问路径和你尝试访问的路径不匹配
Connexion安装swagger-ui扩展后,默认的UI访问路径为/{API根路径}/ui,不是你尝试访问的/swagger。
修复步骤
1. 修正OpenAPI配置
推荐直接删除helloworld-api.yaml中的servers字段即可,Connexion会自动适配当前服务运行的host、端口,默认根路径为/。如果需要自定义API前缀,可以修改为和实际运行一致的配置,示例:
servers: - url: http://localhost:8080/
如果你不想修改servers配置,也可以将启动端口改为9090,后续按配置的路径访问即可。
2. 调整访问路径(可选自定义UI路径)
修复配置后重启服务,默认的访问地址如下:
- Swagger UI 地址:
http://localhost:8080/ui - greeting接口地址:
http://localhost:8080/greeting?name=dave
如果你坚持要通过/swagger路径访问UI,可以在hello.py的add_api方法中添加swagger_url参数指定路径:
app.add_api('helloworld-api.yaml', arguments={'title': 'Hello World Example'}, swagger_url='/swagger')
修改后访问http://localhost:8080/swagger即可正常打开Swagger UI。
内容的提问来源于stack exchange,提问作者seriouslyg0e
相关产品推荐
相关产品推荐

