microservices - jhipster-gateway API 部分中未列出 API-first Rest 端点 (swagger-ui)

标签 microservices jhipster swagger-ui api-gateway openapi-generator

使用jhipster 5.7.2

我创建了一个 api 网关和两个微服务。 在第一个中,我创建了一个实体,它在网关后面完美运行。网关显示生成的实体的 API 端点。

我生成了第二个微服务,但这次我已经在 yml 文件中定义了一个 api,因此我选择了“API 优先”。 我的 api 是使用 open-api 3 定义的。 我使用 instructions there 成功生成了我的 api 代码。 ,并测试使用curl直接调用我的微服务端点:此时它按预期工作。

问题:当我将该微服务放在网关后面时,网关看不到 api。当我转到 api 菜单时,我的微服务显示在下拉列表中,但当我选择它时,它不显示端点。

我在搜索时发现的一件奇怪的事情是,当我直接在我的微服务上调用以下网址时: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”。 我搜索发现this issue ,上面写着:

Swagger UI very old version (2.2.10) is used which does not provide the support for Open API

我认为 openapi 是问题所在,所以我将 yml 文件重写为 swagger 2.0,最后我遇到了同样的问题:微服务 API 可以工作,但似乎对网关不可见。

我开始怀疑这是否只是我这边的问题。

最佳答案

默认情况下,JHipster 将 Swagger 配置为仅列出以 api 开头的 API 端点。这是在 application.yml 中配置的,更改 default-include-pattern 以包含其他路径。例如,要包含以 /api//expires/ 开头的端点,您可以使用以下命令:

swagger:
    default-include-pattern: /(api|expires)/.*

关于microservices - jhipster-gateway API 部分中未列出 API-first Rest 端点 (swagger-ui),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171883/

相关文章:

java - 同时为整体和微服务设计java项目

javadoc 失败,错误类文件为 javax.interceptor.InterceptorBinding not found

java - 当无效的承载 token 发送到后端时如何记录

javascript - header ("Content-Type": "image/jpeg") for Swagger UI.

spring-boot - 由于 Content-Security-Policy,Swagger UI 为空白

node.js - 在 Express/Node Js 中验证基于微服务的 API 端点

亚特实验室 CI : Multiple project

docker - 带有 JHipster 和 Docker 注册表的 Gitlab CI/CD

Swagger:使用 ref 添加描述

domain-driven-design - 微服务事件驱动架构的设计选择