parent
c4ed0dd2f6
commit
447a398302
@ -0,0 +1,17 @@ |
|||||||
|
export default { |
||||||
|
// 主服务
|
||||||
|
master: { |
||||||
|
host: '0.0.0.0', |
||||||
|
port: '3000', |
||||||
|
}, |
||||||
|
swagger: { |
||||||
|
enable: true, |
||||||
|
}, |
||||||
|
dev: { |
||||||
|
// 开发模式拦截器,用以提供接口请求时间和响应大小
|
||||||
|
devInterceptor: true, |
||||||
|
}, |
||||||
|
log: { |
||||||
|
level: 'all', |
||||||
|
}, |
||||||
|
}; |
@ -0,0 +1,12 @@ |
|||||||
|
import developmentConfig from './development'; |
||||||
|
import testConfig from './test'; |
||||||
|
import productionConfig from './production'; |
||||||
|
|
||||||
|
const configs = { |
||||||
|
development: developmentConfig, |
||||||
|
test: testConfig, |
||||||
|
production: productionConfig, |
||||||
|
}; |
||||||
|
const env = process.env.NODE_ENV || 'development'; |
||||||
|
|
||||||
|
export default () => configs[env]; |
@ -0,0 +1,17 @@ |
|||||||
|
export default { |
||||||
|
// 主服务
|
||||||
|
master: { |
||||||
|
host: '127.0.0.1', |
||||||
|
port: '3000', |
||||||
|
}, |
||||||
|
swagger: { |
||||||
|
enable: false, |
||||||
|
}, |
||||||
|
dev: { |
||||||
|
// 开发模式拦截器,用以提供接口请求时间和响应大小
|
||||||
|
devInterceptor: false, |
||||||
|
}, |
||||||
|
log: { |
||||||
|
level: 'info', |
||||||
|
}, |
||||||
|
}; |
@ -0,0 +1,10 @@ |
|||||||
|
export default { |
||||||
|
// 主服务
|
||||||
|
master: { |
||||||
|
host: '0.0.0.0', |
||||||
|
port: '3000', |
||||||
|
}, |
||||||
|
swagger: { |
||||||
|
enable: true, |
||||||
|
}, |
||||||
|
}; |
@ -1,8 +1,9 @@ |
|||||||
import { Module } from '@nestjs/common'; |
import { Module } from '@nestjs/common'; |
||||||
import { LoggerService } from './logger.service'; |
import { LoggerService } from './logger.service'; |
||||||
|
import { ConfigService } from "@nestjs/config"; |
||||||
|
|
||||||
@Module({ |
@Module({ |
||||||
providers: [LoggerService], |
providers: [LoggerService, ConfigService], |
||||||
exports: [LoggerService], |
exports: [LoggerService], |
||||||
}) |
}) |
||||||
export class LoggerModule {} |
export class Logger {} |
||||||
|
@ -0,0 +1,7 @@ |
|||||||
|
import { Module } from '@nestjs/common'; |
||||||
|
import { DevInterceptorService } from './devInterceptor.service'; |
||||||
|
|
||||||
|
@Module({ |
||||||
|
providers: [DevInterceptorService], |
||||||
|
}) |
||||||
|
export class DevInterceptorModule {} |
@ -0,0 +1,18 @@ |
|||||||
|
import { Test, TestingModule } from '@nestjs/testing'; |
||||||
|
import { DevInterceptorService } from './devInterceptor.service'; |
||||||
|
|
||||||
|
describe('GlobalInterceptorService', () => { |
||||||
|
let service: DevInterceptorService; |
||||||
|
|
||||||
|
beforeEach(async () => { |
||||||
|
const module: TestingModule = await Test.createTestingModule({ |
||||||
|
providers: [DevInterceptorService], |
||||||
|
}).compile(); |
||||||
|
|
||||||
|
service = module.get<DevInterceptorService>(DevInterceptorService); |
||||||
|
}); |
||||||
|
|
||||||
|
it('should be defined', () => { |
||||||
|
expect(service).toBeDefined(); |
||||||
|
}); |
||||||
|
}); |
@ -0,0 +1,34 @@ |
|||||||
|
import { |
||||||
|
Injectable, |
||||||
|
NestInterceptor, |
||||||
|
ExecutionContext, |
||||||
|
CallHandler, |
||||||
|
} from '@nestjs/common'; |
||||||
|
import { Observable } from 'rxjs'; |
||||||
|
import { tap } from 'rxjs/operators'; |
||||||
|
import { LoggerService } from '../Logger/logger.service'; |
||||||
|
@Injectable() |
||||||
|
export class DevInterceptorService implements NestInterceptor { |
||||||
|
logger: LoggerService; |
||||||
|
constructor() { |
||||||
|
this.logger = new LoggerService(); |
||||||
|
this.logger.setContext(`[DevlInterceptor]`); |
||||||
|
} |
||||||
|
intercept(context: ExecutionContext, next: CallHandler): Observable<any> { |
||||||
|
const request = context.switchToHttp().getRequest(); |
||||||
|
this.logger.error(request.method, request.url, '<=='); |
||||||
|
|
||||||
|
const now = Date.now(); |
||||||
|
return next.handle().pipe( |
||||||
|
tap((data) => { |
||||||
|
this.logger.error( |
||||||
|
request.method, |
||||||
|
request.url, |
||||||
|
'==>', |
||||||
|
`${Date.now() - now}ms`, |
||||||
|
`${Buffer.from(data).length}b`, |
||||||
|
); |
||||||
|
}), |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
import { Module } from '@nestjs/common'; |
||||||
|
import { ResponseInterceptorService } from './response-interceptor.service'; |
||||||
|
|
||||||
|
@Module({ |
||||||
|
providers: [ResponseInterceptorService] |
||||||
|
}) |
||||||
|
export class ResponseInterceptorModule {} |
@ -0,0 +1,18 @@ |
|||||||
|
import { Test, TestingModule } from '@nestjs/testing'; |
||||||
|
import { ResponseInterceptorService } from './response-interceptor.service'; |
||||||
|
|
||||||
|
describe('ResponseInterceptorService', () => { |
||||||
|
let service: ResponseInterceptorService; |
||||||
|
|
||||||
|
beforeEach(async () => { |
||||||
|
const module: TestingModule = await Test.createTestingModule({ |
||||||
|
providers: [ResponseInterceptorService], |
||||||
|
}).compile(); |
||||||
|
|
||||||
|
service = module.get<ResponseInterceptorService>(ResponseInterceptorService); |
||||||
|
}); |
||||||
|
|
||||||
|
it('should be defined', () => { |
||||||
|
expect(service).toBeDefined(); |
||||||
|
}); |
||||||
|
}); |
@ -0,0 +1,4 @@ |
|||||||
|
import { Injectable } from '@nestjs/common'; |
||||||
|
|
||||||
|
@Injectable() |
||||||
|
export class ResponseInterceptorService {} |
@ -1,7 +1,7 @@ |
|||||||
import { StarlightGuard } from './starlight.guard'; |
import { StarlightGuard } from './starlight.guard'; |
||||||
|
|
||||||
describe('StarlightGuard', () => { |
describe('StarlightGuard', () => { |
||||||
it('should be defined', () => { |
it('should be defined', () => { |
||||||
expect(new StarlightGuard()).toBeDefined(); |
expect(new StarlightGuard()).toBeDefined(); |
||||||
}); |
}); |
||||||
}); |
}); |
||||||
|
@ -1,9 +1,10 @@ |
|||||||
import { Module } from '@nestjs/common'; |
import { Module } from '@nestjs/common'; |
||||||
import { StarlightService } from './starlight.service'; |
import { StarlightService } from './starlight.service'; |
||||||
import { StarlightController } from './starlight.controller'; |
import { StarlightController } from './starlight.controller'; |
||||||
|
import { LoggerService } from '../Logger/logger.service'; |
||||||
|
|
||||||
@Module({ |
@Module({ |
||||||
controllers: [StarlightController], |
controllers: [StarlightController], |
||||||
providers: [StarlightService], |
providers: [StarlightService, LoggerService], |
||||||
}) |
}) |
||||||
export class StarlightModule {} |
export class StarlightModule {} |
||||||
|
Loading…
Reference in new issue