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 { LoggerService } from './logger.service'; |
||||
import { ConfigService } from "@nestjs/config"; |
||||
|
||||
@Module({ |
||||
providers: [LoggerService], |
||||
providers: [LoggerService, ConfigService], |
||||
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,9 +1,10 @@ |
||||
import { Module } from '@nestjs/common'; |
||||
import { StarlightService } from './starlight.service'; |
||||
import { StarlightController } from './starlight.controller'; |
||||
import { LoggerService } from '../Logger/logger.service'; |
||||
|
||||
@Module({ |
||||
controllers: [StarlightController], |
||||
providers: [StarlightService], |
||||
providers: [StarlightService, LoggerService], |
||||
}) |
||||
export class StarlightModule {} |
||||
|
Loading…
Reference in new issue