JHipster单体应用设context-path后API页显示No operations defined in spec!的解决方法
当你给JHipster单体应用设置了/demo上下文路径后,API页面出现"No operations defined in spec!",核心原因是Swagger/OpenAPI的路径配置未跟上上下文路径的变化,按以下步骤排查修复:
修正后端SpringDoc配置
JHipster 7.x使用SpringDoc替代了传统Swagger2,在application.yml中,除已设置的server.servlet.context-path: /demo,还需补充SpringDoc适配上下文路径的配置:springdoc: swagger-ui: config-url: /demo/v3/api-docs/swagger-config api-docs: path: /v3/api-docs该配置能让Swagger UI正确请求带上下文路径的API文档接口。
调整Angular端API文档请求路径
检查Angular项目中Swagger UI组件的配置,确保它请求的API文档地址为/demo/v3/api-docs(相对路径)或完整的http://localhost:8080/demo/v3/api-docs。若使用代理配置(proxy.conf.js),需确保代理规则包含上下文路径:{ "/demo/v3/api-docs": { "target": "http://localhost:8080", "secure": false, "changeOrigin": true } }验证API文档端点可用性
直接在浏览器访问http://localhost:8080/demo/v3/api-docs,若能返回结构化JSON数据,说明后端配置正常;若返回404,检查后端是否引入springdoc-openapi-ui依赖,确保依赖版本与JHipster版本兼容。重启服务并清理缓存
修改配置后,完全重启后端Java服务和Angular开发服务器,同时清理浏览器缓存或使用无痕模式打开页面,避免旧配置缓存导致的问题。
内容的提问来源于stack exchange,提问作者Cuong Nguyen

