使用jhipster 5.7.2
我创建了一个 api 网关和两个微服务。
在第一个中,我创建了一个实体,它在网关后面完美运行。网关显示生成的实体的 api 端点。
我生成了第二个微服务,但这次我已经在 yml 文件中定义了一个 api,因此我选择了“API 优先”。
我的 api 是使用 open-api 3 定义的。
我使用以下命令成功生成了 api 的代码那里有说明 https://www.jhipster.tech/doing-api-first-development/,并测试使用curl直接调用我的微服务端点:此时它按预期工作。
问题:当我将该微服务放在网关后面时,网关看不到 api。当我转到 api 菜单时,我的微服务显示在下拉列表中,但当我选择它时,它不显示端点。
我在搜索时发现的一件奇怪的事情是,当我直接在我的微服务上调用以下网址时:http://localhost:8082/v2/api-docs http://localhost:8082/v2/api-docs(正如微服务的“欢迎页面”中所指出的),我得到:
{"swagger":"2.0","info":{"description":"my micro-service API documentation","version":"0.0.1","title":"api-first micro-service API","contact":{},"license":{}},"host":"localhost:8082","basePath":"/"}
当我的 yml 文件声明 openapi 3.0.1 时,它显示“swagger 2.0”。
我搜索并发现这个问题 https://github.com/jhipster/generator-jhipster/issues/7966,其中说:
使用 Swagger UI 非常旧的版本(2.2.10),不提供
对开放API的支持
我认为 openapi 是问题所在,所以我将 yml 文件重写为 swagger 2.0,最后我遇到了同样的问题:微服务 API 可以工作,但似乎对网关不可见。
我开始怀疑这是否只是我这边的问题。