集成swagger

This commit is contained in:
ap 2022-01-10 15:41:45 +08:00
parent 33ec109dda
commit c52000a4e9
8 changed files with 67 additions and 8 deletions

View File

@ -16,6 +16,7 @@
"@midwayjs/core": "^2.14.0",
"@midwayjs/decorator": "^2.14.0",
"@midwayjs/orm": "^2.14.0",
"@midwayjs/swagger": "^1.3.0",
"@midwayjs/view-nunjucks": "^2.14.0",
"@midwayjs/web": "^2.13.4",
"egg": "^2.33.1",
@ -41,6 +42,7 @@
"cross-env": "^7.0.3",
"jest": "^27.4.3",
"mwts": "^1.3.0",
"swagger-ui-dist": "^4.1.3",
"ts-jest": "^27.1.0",
"typescript": "^4.5.2"
},

View File

@ -11,7 +11,11 @@ export default (app: Application) => {
// 模块描述
description: '基础的权限管理功能,包括登录,权限校验',
// 中间件
globalMiddlewares: ['baseAuthorityMiddleware', 'baseLogMiddleware'],
globalMiddlewares: [
'baseAuthorityMiddleware',
'baseLogMiddleware',
'baseSwaggerMiddleware',
],
// jwt 生成解密token的
jwt: {
// 注意: 最好重新修改,防止破解

View File

@ -0,0 +1,27 @@
import { Provide } from '@midwayjs/decorator';
import { IWebMiddleware, IMidwayWebNext } from '@midwayjs/web';
import { Context } from 'egg';
import * as _ from 'lodash';
/**
* swagger
*/
@Provide()
export class BaseSwaggerMiddleware implements IWebMiddleware {
resolve() {
return async (ctx: Context, next: IMidwayWebNext) => {
const { url } = ctx;
await next();
if (_.startsWith(url, '/swagger-ui/json')) {
ctx.body.components.securitySchemes = {
Authorization: {
type: 'apiKey',
name: 'Authorization',
in: 'header',
},
};
ctx.body.security = [{ Authorization: [] }];
}
};
}
}

View File

@ -1,4 +1,4 @@
import { Get, Inject, Provide } from '@midwayjs/decorator';
import { Get, Inject, Provide, Query } from '@midwayjs/decorator';
import { CoolController, BaseController, CoolUrlTag } from '@cool-midway/core';
import { DemoGoodsEntity } from '../../entity/goods';
import { DemoGoodsService } from '../../service/goods';
@ -28,12 +28,13 @@ export class DemoAppGoodsController extends BaseController {
demoGoodsService: DemoGoodsService;
/**
*
*
* @param name
* @returns
*/
@CoolUrlTag('ignoreToken')
@Get('/all', { summary: '获得所有' })
async all() {
async all(@Query() name: string, @Query() age: number) {
return this.ok(await this.demoGoodsService.all());
}
}

View File

@ -0,0 +1,23 @@
import { Get, Provide, Query } from '@midwayjs/decorator';
import { CoolController, BaseController } from '@cool-midway/core';
import { CreateApiDoc } from '@midwayjs/swagger';
/**
* swagger
*/
@Provide()
@CoolController(null, {
tagName: 'swagger 文档',
description: 'swagger 文档演示',
})
export class DemoSwaggerController extends BaseController {
@CreateApiDoc()
.summary('hello 接口')
.description('hello 接口功能描述')
.param('姓名')
.build()
@Get('/hello')
async hello(@Query() name: string) {
return this.ok(`你好:${name}!!`);
}
}

View File

@ -20,8 +20,6 @@ export default (appInfo: EggAppInfo) => {
charset: 'utf8mb4',
// 驱动
driver: require('mysql2'),
// 设置时区
timezone: '+8:00',
};
config.logger = {

View File

@ -20,8 +20,6 @@ export default (appInfo: EggAppInfo) => {
charset: 'utf8mb4',
// 驱动
driver: require('mysql2'),
// 设置时区
timezone: '+8:00',
};
config.logger = {

View File

@ -4,6 +4,7 @@ import { Application } from 'egg';
import * as view from '@midwayjs/view-nunjucks';
import * as orm from '@midwayjs/orm';
import * as cool from '@cool-midway/core';
import * as swagger from '@midwayjs/swagger';
// import * as wxpay from '@cool-midway/wxpay';
// import * as oss from '@cool-midway/oss';
// import * as redis from '@cool-midway/redis';
@ -18,6 +19,11 @@ import * as cool from '@cool-midway/core';
view,
// 必须,不可移除, https://typeorm.io 打不开? https://typeorm.biunav.com/zh/
orm,
// swagger文档 访问地址 http://127.0.0.1:8001/swagger-ui/index.html
{
component: swagger,
enabledEnvironment: ['local'],
},
// 必须,不可移除, cool-admin 官方组件 https://www.cool-js.com
cool,
// oss插件需要到后台配置之后才有用默认是本地上传