Здравствуйте. Я пытаюсь создать приложение RestFul, используя Nest Js, и пытаюсь создать глобальный фильтр исключений.
В основном мне нужно 2 конечные точки.
/api/user/register
/api/auth/token
Каждая конечная точка выдает свое исключение, но я не могу заставить его работать. Это не go через мой класс ExceptionFilter. Я что-то пропустил?
Буду очень признателен, если кто-нибудь сможет мне помочь с этим.
Большое спасибо.
AuthModule.ts
@Module({
imports: [
MongooseModule.forFeature([
{
name: 'AuthClient',
schema: AuthClientSchema,
}
]),
],
controllers: [AuthController],
providers: [
AuthService,
],
})
export class AuthModule { }
UserModule.ts
@Module({
imports: [
MongooseModule.forFeature([
{
name: 'User',
schema: UserSchema,
}
]),
],
controllers: [UserController],
providers: [UserService],
})
export class UserModule { }
AppModule.ts
@Module({
imports: [
DatabaseModule,
AuthModule,
UserModule,
],
providers: [
{
provide: APP_FILTER,
useClass: HttpExceptionFilter,
}
],
})
export class AppModule { }
Controller.ts
export class UserController {
@Post('register')
public register(@Body() registerDto: RegisterDto, @Res() res: Response): void {
return this.userService.create(registerDto);
}
}
export class AuthController {
@Post('auth')
public createToken(@Body() authDto: AuthDto, @Res() res: Response): void {
this.authService.findByUsername(authDto).then((data) => {
.....
})
}
}
Providers.ts
@Injectable()
export class AuthService {
async findByUsername(authDto: AuthDto) {
throw new HttpException('Opps something went wrong', 500);
}
}
@Injectable()
export class UserService {
async create(registerDto: RegisterDto) {
throw new HttpException('Unable to create', 500);
}
}
HttpExceptionFilter .ts
@Catch(HttpException)
export class HttpExceptionFilter extends BaseExceptionFilter {
catch(exception: HttpException, host: ArgumentsHost): void {
console.log('<<<<<<>>>>>>>>>>>>>>>>>', exception)
}
}
main.ts
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.setGlobalPrefix('api');
await app.listen(3000);
}
bootstrap();
Репо: нажмите здесь