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

Posted

技术标签:

【中文标题】jhipster-gateway API 部分 (swagger-ui) 中未列出 API-first rest 端点【英文标题】:API-first rest endpoint not listed in jhipster-gateway API section (swagger-ui) 【发布时间】:2019-06-07 20:56:51 【问题描述】:

使用 jhipster 5.7.2

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

我生成了第二个微服务,但这次我已经在 yml 文件中定义了一个 api,所以我选择了“API-first”。 我的 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 非常旧的版本(2.2.10),不提供 对 Open API 的支持

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

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

【问题讨论】:

您的 API 端点是否以 api 开头?默认情况下,Swagger 配置为仅查找那些端点 github.com/jhipster/jhipster-sample-app-microservice/blob/… 谢谢哥们,成功了 :) 我不得不提一下,在解决问题后,openapi3 工作正常。端点 url 有点奇怪:localhost:8080/expires/api/expires。我可能会更改配置。 【参考方案1】:

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

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

【讨论】:

以上是关于jhipster-gateway API 部分 (swagger-ui) 中未列出 API-first rest 端点的主要内容,如果未能解决你的问题,请参考以下文章

iOS 部分API理解

libusb系列-005-部分API简介

使用wikimedia api分别获取所有部分

使用请求获取API的各个部分

为啥 YouTube 数据 API 中存在缺失部分错误

Openshift API部分源码学习笔记