前言
随着前后端分离的发展,接口规范化成为了必不可少的一部分。OpenAPI 是一个开放的 API 规范,可以定义 RESTful API 的结构、请求参数、响应数据等信息。本文将介绍如何在 Deno 中使用 OpenAPI 进行接口规范化。
安装
在开始之前,我们需要安装一个支持 OpenAPI 的库,这里我们选择 oak-openapi
。使用以下命令进行安装:
deno install --unstable --allow-read --allow-net https://deno.land/x/oak_openapi/cli.ts
创建 API
我们先创建一个简单的 API,用于演示如何使用 OpenAPI 进行规范化。创建一个名为 app.ts
的文件,添加以下代码:
-- -------------------- ---- ------- ------ - ------------ ------ - ---- --------------------------------- ----- ------ - --- --------- --------------- ----- -- - ----------------- - ------ -------- --- ----- --- - --- -------------- ------------------------- --------------------------------- ----- ------------ ----- ---- ---
以上代码创建了一个简单的应用程序,监听 8000 端口,并返回一个字符串 "Hello World!"。
定义 OpenAPI 规范
接下来,我们需要定义 API 的 OpenAPI 规范。在项目根目录下创建一个名为 openapi.yml
的文件,添加以下代码:
-- -------------------- ---- ------- -------- ----- ----- ------ -- --- -------- ----- ------ -- ---- -------- ----- ----- ---------- ------ ------------ - ---------- -------- -------- ----------- ------- ----- ------
以上代码定义了我们的 API,包括 API 的标题、版本号、请求路径、请求方法、响应内容等信息。
使用 oak-openapi
现在,我们已经完成了 API 和 OpenAPI 规范的定义,接下来我们需要使用 oak-openapi
这个库来将它们结合起来。
在 app.ts
中添加以下代码:
-- -------------------- ---- ------- ------ - ------- - ---- ----------------------------------------- ----- ------- - --- --------- ----- -------------- --- ----- --------------- --------------------------
以上代码创建了一个 OpenApi
实例,并传入了我们刚刚定义的 openapi.yml
文件路径。然后,我们调用 init()
方法来初始化。
最后,我们使用 openApi.routes()
方法来获取路由和中间件,将其添加到应用程序中。
测试
我们可以使用 curl
命令来测试我们的 API。在终端中输入以下命令:
curl http://localhost:8000
如果一切正常,你应该会看到 "Hello World!" 的输出。
我们还可以使用 Swagger UI 来查看我们的 API 文档。在终端中输入以下命令:
deno run --unstable --allow-read --allow-net https://deno.land/x/oak_openapi/swagger.ts \ --file=./openapi.yml \ --port=8080 \ --path=/swagger-ui \ --spec-path=/openapi.json
以上命令将启动一个 Swagger UI 服务,可以在浏览器中查看我们的 API 文档。在浏览器中输入以下地址:
http://localhost:8080/swagger-ui
如果一切正常,你应该会看到 Swagger UI 的界面,并且能够查看我们的 API 文档。
总结
本文介绍了如何在 Deno 中使用 OpenAPI 进行接口规范化。我们使用了 oak-openapi
这个库来实现,可以方便地创建和管理 API 文档。希望本文能够对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65c9a869add4f0e0ff37ae6f