OpenAPI 是一种与语言无关且独立于平台的规范,用于标准化 REST API。OpenAPI 使用户能够在不深入代码的情况下轻松理解 API。
Swagger-UI 根据 OpenAPI 规范生成可视化文档,帮助可视化和测试 REST API。
本文将带你了解如何在 Spring Boot 应用中使用 Springdoc-OpenAPI 生成 OpenAPI 文档、测试 REST API 并为 OpenAPI 配置 JWT Authentication(认证)。
Swagger-UI 是 HTML、Javascript 和 CSS 文件的集合,可根据 OpenAPI 规范生成 UI 界面。
当 API 数量不断增加时,编写 OpenAPI 文档规范就变得非常具有挑战性。Springdoc-OpenAPI 可以帮助我们自动生成 OpenAPI 文档。
接下来,我们通过示例了解如何使用 Springdoc-OpenAPI 库自动生成 REST API 的 OpenAPI 文档,并使用 Swagger-UI 可视化这些 API。
首先,添加 Springdoc-OpenAPI 依赖。
此依赖还将 web-jar 添加到 Spring Boot 应用中。
启动应用,打开浏览器访问:。
你可以看到 Swagger-UI 页面:

文档可以通过 访问。
使用 为 API 添加说明、服务条款和其他元信息:
还可以将配置和元信息定义在 或 文件中,如:、 和 。
启动应用,并打开 Swagger-UI::

可以通过 访问OpenAPI 文档:
接着,为 OpenAPI 配置基于 JWT 认证。
我们可以按 API、类或全局级别配置 OpenAPI 的 JWT 认证。
声明 JWT 认证只用于特定 API。
定义配置如下:
@SecurityScheme 注解将 securitySchemes 添加到 OneAPI 规范的 components (组件)部分。 定义了 API 可以使用的安全机制。支持的安全机制有 APIKey、HTTP Authentication(Basic 和 Bearer)、OAuth2 和 OpenID Connect。
在本例中,使用 HTTP Bearer Authentication 作为安全方案。
对于基于 HTTP Bearer Token 的认证,我们需要选择安全方案为 ,bearer 格式为 JWT。
对于 API 级认证,在 API 上使用 注解:
配置完毕后,重启应用。访问 URL :

单击 “🔒” 图标会打开一个登录对话框,让用户提供访问 Token 以调用 API:

在本例中,可以通过向 Authentication API 提供 或 j 来获取 JWT Token。获取 JWT Token 后,将其输入文本框,然后点击 “Authorize” 按钮和 “Close” 按钮。

有了 JWT Token,就可以调用删除用户 API 了:

如上,你可以看到 Swagger-UI 将此 Token 作为 HTTP Bearer 提供给 Authorization Header。最后,成功地调用了受保护的 API。
也可以为一个类中的所有 API 提供 OpenAPI 认证。
在包含所有 API 的类上声明 注解,为该类中的所有 API 提供认证:
假设该类有两个 API,在 Swagger-UI 中看起来就像这样:

通常情况下,我们更倾向于将 OpenAPI 认证应用于应用中的所有 API。
我们可以使用 Spring 注解声明全局级别的安全配置:
如上,Springdoc-OpenAPI 就能为应用中的所有 OpenAPI 配置 JWT 认证

尝试调用 GET API:

API 返回了 “HTTP 401 Unauthorized。API”,这是因为未提供 Token,API 是受保护的。接下来,提供 JWT Token 并重新发起请求。
点击 “Authorize” 按钮并提供 JWT Token 以调用 API。我们可以从 swagger 控制台中提供的 Authentication API 获取 Bearer Token:

配置好 JWT Token 后,重新调用 API:

此时,有了正确的 JWT Token,就可以成功调用受保护的 API 了。
本文介绍了如何为 OpenAPI 配置 JWT 认证。Swaggerdoc-OpenAPI 基于 Spring Boot 应用中的 REST API 生成 OneAPI 规范。Swagger-UI 可以根据 OneAPI 规范对 REST API 生成文档和进行测试。
参考:
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/4007.html