在前后端分离的开发模式下,RESTful API 文档的编写和维护变得尤为重要。Swagger 是一款流行的 RESTful API 文档编写工具,其文档格式规范也广泛被采用。在 Node.js 中,可以使用“swagger-doc-parser”来解析 Swagger 文档,便于开发者快速地生成 API 数据。
安装
在 Node.js 项目中,可以使用 npm 包管理器轻松地安装 swagger-doc-parser:
--- ------- ------------------
使用说明
- 解析本地 Swagger 文档文件
----- ------ - ------------------------------ ----- ----------- - ----------------- ------------------------- ----- ---- -- - -- ----- - ------------------- - ---- - ----------------- - ---
- 解析 Swagger 文档 URL
----- ------ - ------------------------------ ----- ---------- - --------------------------------------------- ------------------------ ----- ---- -- - -- ----- - ------------------- - ---- - ----------------- - ---
使用示例
解析本地 Swagger 文档文件
假设我们有如下的 Swagger 文档文件 ./swagger.yaml
:
-------- ----- ----- -------- ------- ------ ------- --- ------------ ------- --- ----------- --------- ---- ----- - ----- ---- ------------ ---- ---------- - ----- -------- ------------ -------- ---------- ------ ------- ---- ----- - ---- -------- --- --- ----- ------------ ----------- ---------- ------ ------------ ------- --- ----- ------- ----- ----- ------ ----- -------------------- ---------- ---- ----- - -------- -------- --- --- -------- ------------ -------------- ---------- ------ ------------ ------- --- -------- ------- ----- ----- ------ ----- ----------------------- ------------ ----- ----- ------ --------- - -- - ---- ----------- --- ----- ------- ----- ----- ------ ---------- --- -------- ----- ------ --------- - -- - ---- - ----- ----------- --- ----- ------- ----- ----- ------ ---------- --- ------ ----- ------
我们可以使用 swagger-doc-parser 解析该文档:
----- ------ - ------------------------------ ----- ----------- - ----------------- ------------------------- ----- ---- -- - -- ----- - ------------------- - ---- - ----------------- - ---
解析结果如下:
- ---------- -------- -------- -------- ----- -------------- -------- --- ------------- ----------- ------- ------- - - ------- ------- -------------- ----- ----------- -- - ------- ----------- -------------- --------- ----------- - -- -------- - --------- - ------ - ------- - ------ -- ---------- ---- --- ------- -------------- -------------- ------------ - ------ - -------------- -------- --- ------- --------- - ------- -------- -------- - ------- -------------------- - - - - - -- ------------ - ------ - ------- - ---------- -- ---------- ---- --- ---------- -------------- ----------------- ------------ - ------ - -------------- -------- --- ---------- --------- - ------- -------- -------- - ------- ----------------------- - - - - - - -- -------------- - ------- - ------- --------- ----------- - ----- ------ -- ------------- - ----- - ------- --------- -- ------- - ------- --------- ------------ --- - - -- ---------- - ------- --------- ----------- - ----- ------- ------- -- ------------- - ----- - ------- --------- -- ------- - ------- --------- ------------ --- -- -------- - ------- -------- - - - - -
解析 Swagger 文档 URL
我们可以使用如下示例代码来解析 swagger.io 托管的 Petstore Swagger API 文档:
----- ------ - ------------------------------ ----- ---------- - --------------------------------------------- ------------------------ ----- ---- -- - -- ----- - ------------------- - ---- - ----------------- - ---
解析结果如下:
- ---------- ------ ------- - ---------- -------- -------- -------- ---------- -------------- -- ------ --- ---- ---- - -------- -- -- ------- -- ----------- -------- -- --- ----------- --------------- ----------------- --------------------------- ---------- - ------- -------- --- ------ ------ -------------------- -------- -------------------- -- ---------- - ------- ------- ----- ------ ------------------------------------------------- - -- ------- ---------------------- ----------- ------ ------- - - ------- ------ -------------- ----------- ----- ---- ------ --------------- - -------------- ----- --- ------ ------ ------------------- - -- - ------- -------- -------------- ------- -- -------- ------- -- - ------- ------- -------------- ----------- ----- ------ --------------- - -------------- ----- --- ---- ----- --- ------- ------ ------------------- - - -- ---------- - -------- ------ -- -------- - ------- - ------- - ------- - ----- -- ---------- ---- - --- --- -- --- ------- -------------- --------- ----------- - ------------------- ----------------- -- ----------- - ------------------ ------------------ -- ------------- - - ----- ------- ------- ------- -------------- ---- ------ ---- ----- -- -- ----- -- --- ------- ----------- ----- --------- - ------- ------------------- - - -- ------------ - ------ - -------------- -------- ------ - -- ----------- - - ---------------- - ------------- ----------- - - - -- ------ - ------- - ----- -- ---------- ------- -- -------- ----- -------------- ------------ ----------- - ------------------- ----------------- -- ----------- - ------------------ ------------------ -- ------------- - - ----- ------- ------- ------- -------------- ---- ------ ---- ----- -- -- ----- -- --- ------- ----------- ----- --------- - ------- ------------------- - - -- ------------ - ------ - -------------- -------- -- --------- -- ------ - -------------- ---- --- ------ -- ------ - -------------- ----------- ---------- - -- ----------- - - ---------------- - ------------- ----------- - - - - -- -------------------- - ------ - ------- - ----- -- ---------- ------ ---- -- -------- -------------- --------- ------ ------ --- -- -------- ---- ----- --------- --------- -------------- ------------------- ----------- - ------------------ ------------------ -- ------------- - - ------- --------- ----- -------- -------------- ------- ------ ---- ---- -- -- ---------- --- -------- ----------- ----- ------- -------- -------- - ------- --------- ------- - ------------ ---------- ------ -- ---------- ----------- -- ------------------- ------- - -- ------------ - ------ - -------------- ----------- ----------- --------- - ------- -------- -------- - ------- ------------------- - - -- ------ - -------------- -------- ------ ------ - -- ----------- - - ---------------- - ------------- ----------- - - - - -- ------------------ - ------ - ------- - ----- -- ---------- ------ ---- -- ------ -------------- -------- ---- --- -- -------- ---- ----- --------- -------- --- ----- ----- ---- --- ---------- -------------- ----------------- ----------- - ------------------ ------------------ -- ------------- - - ------- ------- ----- -------- -------------- ----- -- ------ ---- ----------- ----- ------- -------- -------- - ------- -------- -- ------------------- ------- - -- ------------ - ------ - -------------- ----------- ----------- --------- - ------- -------- -------- - ------- ------------------- - - -- ------ - -------------- -------- --- ------ - -- ----------- - - ---------------- - ------------- ----------- - - -- ------------- ---- - -- --------------- - ------ - ------- - ----- -- ---------- ----- --- -- ---- -------------- -------- - ------ ----- -------------- ------------- ----------- - ------------------ ------------------ -- ------------- - - ------- -------- ----- ------- -------------- --- -- --- -- -------- ----------- ----- ------- ---------- --------- ------- - -- ------------ - ------ - -------------- ----------- ----------- --------- - ------- ------------------- - -- ------ - -------------- -------- -- --------- -- ------ - -------------- ---- --- ------ - -- ----------- - - ---------- -- - - -- ------- - ------- - ----- -- ---------- -------- - --- -- --- ----- ---- ---- ------ -------------- -------------------- ----------- - ----------------------------------- -- ----------- - ------------------ ------------------ -- ------------- - - ------- -------- ----- ------- -------------- --- -- --- ---- ----- -- -- --------- ----------- ----- ------- ---------- --------- ------- -- - ------- ------- ----- ----------- -------------- -------- ---- -- --- ----- ----------- ------ ------- -------- -- - ------- --------- ----- ----------- -------------- -------- ------ -- --- ----- ----------- ------ ------- -------- - -- ------------ - ------ - -------------- -------- ------ - -- ----------- - - ---------------- - ------------- ----------- - - - -- --------- - ------- - ----- -- ---------- -------- - ----- -------------- ------------ ----------- - ------------------ ------------------ -- ------------- - - ------- ---------- ----- --------- ----------- ------ ------- -------- -- - ------- -------- ----- ------- -------------- ---- -- -- -------- ----------- ----- ------- ---------- --------- ------- - -- ------------ - ------ - -------------- -------- -- --------- -- ------ - -------------- ---- --- ------ - -- ----------- - - ---------------- - ------------- ----------- - - - - -- ------------------- - ------ - ------- - ------- -- ---------- -------- --- ----------- -- -------- -------------- -------- - --- -- ------ ----- -- ------------ -------------- --------------- ----------- - ------------------ -- ------------- --- ------------ - ------ - -------------- ----------- ----------- --------- - ------- --------- ----------------------- - ------- ---------- --------- ------- - - - -- ----------- - - ---------- -- - - - -- --------------- - ------- - ------- - ------- -- ---------- ------ -- ----- --- - ----- -------------- ------------- ----------- - ------------------ ------------------ -- ------------- - - ----- ------- ------- ------- -------------- ------ ------ --- ---------- --- ----- ----------- ----- --------- - ------- --------------------- - - -- ------------ - ------ - -------------- ----------- ----------- --------- - ------- --------------------- - -- ------ - -------------- -------- ------ - - - -- ------------------------- - ------ - ------- - ------- -- ---------- ----- -------- ----- -- ---- -------------- ---- ----- -------- --- ------- --- ---- ----- -- - --- -- --- ----- ------ ---- --------- ------------ -------------- --------------- ----------- - ------------------ ------------------ -- ------------- - - ------- ---------- ----- ------- -------------- --- -- --- ---- ----- -- -- --------- ----------- ----- ------- ---------- ---------- --- ---------- -- --------- ------- - -- ------------ - ------ - -------------- ----------- ----------- --------- - ------- --------------------- - -- ------ - -------------- -------- -- --------- -- ------ - -------------- ------ --- ------ - - -- --------- - ------- - ------- -- ---------- ------- -------- ----- -- ---- -------------- ---- ----- -------- --- ------- --- ---- ----- -- - --- -- --- ----- ------ ---- --------- ------------ -------------- -------------- ----------- - ------------------ ------------------ -- ------------- - - ------- ---------- ----- ------- -------------- --- -- --- ----- ---- ----- -- -- --------- ----------- ----- ------- ---------- ---------- -- --------- ------- - -- ------------ - ------ - -------------- - ------------------------------------------------------------------------------ ---------- -----------------------------------------------------------------------------------------------------------------------------