手动搭建koa+ts项目框架(swagger文档篇)

文章目录

  • 一、安装依赖
  • 二、直接使用json文件生成
  • 三、根据对应api注释生成
    • 新建`swagger.ts`文件
    • 新建`./routes/users.ts`文件
    • 入口文件引入对应数据
    • `如有启发,可点赞收藏哟~`


一、安装依赖

  • swagger-jsdoc
    读取您的JSDoc带注释的源代码并生成OpenAPI (Swagger) 规范
  • koa2-swagger-ui
    根据配置生成swagger界面
npm i swagger-jsdoc koa2-swagger-ui -S
and
npm i @types/swagger-jsdoc -D

二、直接使用json文件生成

无需使用swagger-jsdoc,直接根据json配置数据生成

import Koa from 'koa';
import { koaSwagger } from 'koa2-swagger-ui';const app = new Koa();app.use(koaSwagger({routePrefix: '/swagger', // host at /swagger instead of default /docsswaggerOptions: {url: 'http://petstore.swagger.io/v2/swagger.json', // example path to json},}),
);app.listen(3001);

在这里插入图片描述

三、根据对应api注释生成

使用swagger-jsdoc读取每个接口前面的注释,生成对应json数据后生成

新建swagger.ts文件

项目配置文件新增 /config/swagger.ts

import swaggerJSDoc from 'swagger-jsdoc';
import fs from 'fs'
const options = {definition: {openapi: '3.0.1',info: {title: '我是标题',version: '1.0.0',description: '我是描述',},//servers的每一项,可以理解为一个服务,实际项目中,可自由修改servers: [{url: '/api',description: 'API server',},],},apis: ['./routes/*.ts'],
};export const swaggerSpec = swaggerJSDoc(options);// 如果有Swagger规范文件转TS的需求,可在此处保留Swagger规范文件到本地,方便使用
fs.writeFileSync('./dist/swagger.json', JSON.stringify(swaggerSpec, null, 2));

注意 apis 相对于项目更目录而言

新建./routes/users.ts文件

/src/routers新建user.ts文件

const router = require('koa-router')()
import Koa from 'koa'// import Router from 'koa-router'
// const router = new Router();/**
* @swagger
* tags:
*   name: Users
*   description: User management
*//**
* @swagger
* components:
*   schemas:
*     User:
*       type: object
*       properties:
*         id:
*           type: integer
*           description: The user ID.
*         name:
*           type: string
*           description: The user's name.
*         email:
*           type: string
*           description: The user's email.
*       required:
*         - id
*         - name
*         - email
*//**
* @swagger
* /users:
*   get:
*     summary: Retrieve a list of users
*     tags: [Users]
*     responses:
*       200:
*         description: A list of users.
*         content:
*           application/json:
*             schema:
*               type: array
*               items:
*                 $ref: '#/components/schemas/User'
*/
router.get('/users', async (ctx: Koa.Context) => {const users = [{ id: 1, name: 'userName', email: 'email.com' },];ctx.body = users;
});
export default router

入口文件引入对应数据

可使用以下两个方式

import Koa from 'koa';
const Router = require('koa-router');
import { koaSwagger } from 'koa2-swagger-ui';
import swaggerSpec from '../config/swagger';
import usersRoutes from '../routes/users';const app = new Koa();
const router = new Router();router.use('/api', usersRoutes.routes(), usersRoutes.allowedMethods());app.use(koaSwagger({routePrefix: '/swagger', // host at /swagger instead of default /docsswaggerOptions: {spec: swaggerSpec as Record<string, unknown>,},}),
);app.use(router.routes()).use(router.allowedMethods());const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {console.log(`Server is running at http://localhost:${PORT}`);
});

或者

import Koa from 'koa';
const Router = require('koa-router');
const swaggerUI = require('koa2-swagger-ui').koaSwagger;
import swaggerSpec from '../config/swagger';
import usersRoutes from '../routes/users';const app = new Koa();
const router = new Router();router.use('/api', usersRoutes.routes(), usersRoutes.allowedMethods());router.get('/swagger',swaggerUI({routePrefix: false,swaggerOptions: {spec: swaggerSpec,},})
);app.use(router.routes()).use(router.allowedMethods());const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {console.log(`Server is running at http://localhost:${PORT}`);
});

编译构建或者实时编译后
访问http://localhost:3000/swagger

在这里插入图片描述

如果swagger.ts文件的 apis配置有误会出现下图提示

在这里插入图片描述


如有启发,可点赞收藏哟~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286482.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

意大利语文章翻译成中文怎么收费?

随着全球化的步伐加快&#xff0c;不同语言之间的交流日益频繁&#xff0c;其中意大利语翻译成中文的需求逐渐增多。那么&#xff0c;意大利语文章翻译成中文该如何收费呢&#xff1f;又在哪里能找到专业的意大利语翻译呢&#xff1f; 翻译是将一种语言文字转化为另一种语言文字…

Android:安卓学习笔记之OkHttp原理的简单理解和使用

Android OkHttp使用原理的简单理解和使用 OkHttp 0、前言1、请求与响应流程 1.1 请求的封装1.2 请求的发送1.3 请求的调度1.4 请求的处理2、拦截器 2.1 RetryAndFollowUpInterceptor2.2 BridgeInterceptor2.3 CacheInterceptor 2.3.1、HTTP缓存原理2.3.2、强制缓存2.3.3、协商…

Oracle迁移乾坤大挪移,用它轻松拿捏!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

智能 GPT 图书馆又重生了

智能 GPT 图书馆又重生了 作者&#xff1a;程序员小白条 1&#xff09;概述 自从大二寒假准备开始筹备这个项目&#xff0c;到现在已经一年了&#xff0c;这个项目能维护一年&#xff0c;不愧是我.jpg。本来这个项目只是想练练手&#xff0c;因为那时候刚学完 Spring Boot2 V…

macOS 安装 oh-my-zsh 后 node 报错 command not found : node

最近为了让终端中显示 git 分支的名称&#xff0c;安装了 oh-my-zsh &#xff0c;安装之后呢&#xff0c;我原先安装的 Volta、 node 都没法用了&#xff0c;报错如下&#xff1a; 这时候粗略判断应该是系统变量出了问题&#xff0c;oh-my-zsh 的变量文件是 ~/.zshrc&#xff0…

【数据结构】单链表的定义和操作

目录 1.单链表的定义 2.单链表的创建和初始化 3.单链表的插入节点操作 4.单链表的删除节点操作 5.单链表的查找节点操作 6.单链表的更新节点操作 7.完整代码 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助…

互式流程图|BPMN JointJS+ JavaScript 3.7.3 Crack

JointJS 是 JavaScript 图表库为卓越的 UI 提供支持 使用经过验证的库快速、自信地构建高级视觉和无代码/低代码应用程序。 赋能全球行业领导者 使用 JointJS 构建的图表 一个库&#xff0c;‍无限 UI 选项 直接在您的应用程序中享受交互式流程图、BPMN 和其他图表工作室。利用…

如何同时给每张PPT插入不同的图片?这2种方法可行!

有时候创作PPT&#xff0c;我们需要把几十张图片插入到PowerPoint中&#xff0c;每张图片作为一张幻灯片&#xff0c;如果一张张手动操作&#xff0c;那就未免太花时间了。今天小编来分享2种方法&#xff0c;可以让您快速给每张PPT插入不同图片。 方法一、使用“创建相册” 1.…

JVM-10-类加载

Java虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这个过程被称作虚拟机的类加载机制。 一个类型从被加载到虚拟机内存中开始&#xff0c;到卸载出内存为止&#…

JavaScript基础函数+对象+继承

目录 1.创建函数 2.函数分类 2.1带参数函数 2.2匿名函数 2.3嵌套函数 2.4立即执行函数 ES6特有的箭头函数 2.5对象中的函数 3.this对象 4.有参构造函数创建对象 5.原型 prototype 6.函数应用&#xff08;继承&#xff09; 6.1原型链继承 6.2构造继承 6.3组合继承&…

Python Pandas 通过loc/iloc修改局部数据(第9讲)

Python Pandas 通过loc/iloc修改局部数据(第9讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

VS+Qt 打包Python程序

书接上回&#xff0c;调用C调用python&#xff0c;下面来谈谈随exe文件打包。 先说下环境vs2019Qt5.12.11python3.8&#xff0c;这里需要注意如果你要适配Win7的系统&#xff0c;python最好是9以下&#xff0c;以上不兼容&#xff0c;也没时间找方法&#xff0c;找到评论说下 如…