前言
在现代的 Web 应用程序中,很多时候需要与后端应用程序进行 API 交互。为了简化 API 开发,使用 OpenAPI 规范 可以帮助开发者定义和文档化 API,支持自动化生成客户端库和服务端框架。在 JavaScript 领域,有很多开源工具可以帮助开发者使用 OpenAPI 规范构建 API 客户端。
本文介绍了一个名为 @josepmc/openapi-client 的 npm 包,它是一个简单易用的 OpenAPI 客户端,支持从 OpenAPI 规范中自动生成 API 客户端,使用者只需要提供 OpenAPI 规范的 URL 即可。
本文将详细介绍 @josepmc/openapi-client 的使用方法,并提供示例代码以帮助读者加深对其的理解。
安装
使用 npm 可以很方便地安装 @josepmc/openapi-client:
npm install @josepmc/openapi-client
使用
@josepmc/openapi-client 提供了简单的 API,使用户可以简单、快速地与 OpenAPI API 进行交互。下面将介绍其主要 API。
创建实例
首先要做的就是创建一个 @josepmc/openapi-client 的实例。你需要提供一个 OpenAPI 规范的 URL,该 URL 可以是本地文件或远程 URL。如果您使用一个远程 URL,@josepmc/openapi-client 会从中获取您的 API 清单并自动生成一个可用的 API 客户端库。
const { OpenApiClient } = require('@josepmc/openapi-client'); const openApiClient = new OpenApiClient({ openApiUrl: 'https://petstore.swagger.io/v2/swagger.json', // 可选项。若设置为true,请求发送时将打印出详细信息 debug: false, });
在这里,我们创建了一个名为 openApiClient
的变量来存储 @josepmc/openapi-client 的实例。我们向其构造函数传入了一个包含两个属性的对象。第一个属性 openApiUrl
是我们 API 的链接地址。第二个属性 debug
是一个可选项,用于控制请求发出时是否显示详细的信息,如果不需要显示详细信息可以不传。
调用 API
创建好 @josepmc/openapi-client 实例后,我们可以开始调用 API 了。可以使用自动生成的 API 客户端的 api
方法去调用 API。
-- -------------------- ---- ------- -- -------- ----- -------- --------- - --- - ----- ------ - ----- --------------------------------- -------------------- -- -------- -------- ------ ------- - ----- ----- - -------------------- -- ----- ----- ------ ---- - -
在这里,我们使用 @josepmc/openapi-client 自动生成的 api
方法调用了 findPets
API。我们传入 findPets
方法的选项可以用来过滤查询,排序等等。然后我们使用 console.log
打印 API 的返回值。由于 API 调用是异步的,我们使用 async/await
语法来处理这个异步调用。使用 try...catch
语法来处理 API 调用中可能出现的异常。
自动获取 Token
在有些情况下,API 的调用需要先获取 Token。我们可以使用 OAuth2
实例获取 Token 并且将 Token 自动添加到后续 API 请求的请求头中。
下面是使用 OpenAPI ApiKeyWithPrefix 模式获取 Token 并自动添加到 API 请求的头部的代码示例:
-- -------------------- ---- ------- ----- - -------------- ------ - - ----------------------------------- ----- ------------- - --- --------------- ----------- ---------------------------------------------- --- ----- -------- - ----------------- ----- ------------ - --------------------- ----- ----- - -------- ----- ------- - --- -------- --------------- ---------------------------------------- --------- ------------- ------- ------------------- ---------- --------------- ---------- ---------- -------------- --------- ------------ ------- -- --- --------------------------------- ----- -------- --------- - --- - ----- ------ - ----- --------------------------------- -------------------- -- -------- -------- ------ ------- - ----- ----- - -------------------- -- ----- ----- ------ ---- - -
在这里,我们创建一个名为 authApi
的 OAuth2 实例,它是用于获取 API 访问令牌的类。我们为其传入了一个 accessTokenUri
属性,该属性表示我们请求 Token 的链接地址。然后我们向其构造函数中传入我们的 clientId
,clientSecret
和 scopes
。不同服务提供商还可能需要我们提供其他属性信息,如下:
-- -------------------- ---- ------- ----- ------- - --- -------- --------------- ---------------------------------------- ------------ ------------------------------------------ ----------------- --------------------------------------- --------- ------------- ------- ------------------- ---------- --------------- ---------- ---------- -------------- --------- ------------ ------- -- ------ --------------------------- -------------------- ---
当您创建好 authApi
实例后,我们可以将其传递给我们的 openApiClient
实例,这样 openApiClient
将会自动获取 Token。最后,我们可以像平常一样使用 findPets
API,而 openApiClient
会自动添加 API 访问令牌到该 API 请求的头部。
结语
通过本文,您已经了解如何使用 @josepmc/openapi-client 创建、调用 OpenAPI 规范定义的 API。@josepmc/openapi-client 提供了很多方便的 API,让开发人员可以轻松地从客户端应用程序中访问后端服务。因此,认真理解它的 API 应该能够让您的开发工作更简单。
最后,完整的代码示例在这里:
-- -------------------- ---- ------- ----- - -------------- ------ - - ----------------------------------- ----- ------------- - --- --------------- ----------- ---------------------------------------------- --- ----- -------- - ----------------- ----- ------------ - --------------------- ----- ----- - -------- ----- ------- - --- -------- --------------- ---------------------------------------- --------- ------------- ------- ------------------- ---------- --------------- ---------- ---------- -------------- --------- ------------ ------- -- --- --------------------------------- ----- -------- --------- - --- - ----- ------ - ----- --------------------------------- -------------------- -- -------- -------- ------ ------- - ----- ----- - -------------------- -- ----- ----- ------ ---- - - ----------
祝您愉快的编码!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bc4967216659e244342