A Nest http exception filter.
NestJS Http Exception Filter
A simple NestJS Http Exception Filter logging the HTTP response and formatting errors returned by the API.
Installation
npm install --save @algoan/http-exception-filter
Usage
Default usage
Use the http exception filter as a global filter (cf. refer to the last paragraph of this section for more details).
Example:
import { Module } from '@nestjs/common';
import { APP_FILTER } from '@nestjs/core';
import { HttpExceptionFilter } from '@algoan/http-exception-filter';
@Module({
providers: [
{
provide: APP_FILTER,
useClass: HttpExceptionFilter,
},
],
})
export class CoreModule {}
Example 2:
import { NestFactory} from '@nestjs/core';
import {HttpExceptionFilter} from '@algoan/http-exception-filter';
import { MainModule } from './main.module';
async function bootstrap() {
const app = await NestFactory.create(MainModule,{
});
app.useGlobalFilters(new HttpExceptionFilter());
await app.listen(3000);
console.log(`App listening on port 3000`)
}
bootstrap();
Default response body
{
"code": string,
"message": string,
"status": number
}
{
"code": "BAD_REQUEST",
"message": "Bad Request",
"status": 400
}
{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal Server Error",
"status": 500
}
{
code: 'PAYLOAD_TOO_LARGE',
message: `
Your request entity size is too big for the server to process it:
- request size: 590001;
- request limit: 102400.`,
status: 413,
}
Default Logger messages
[Nest] 96665 - 04/14/2020, 6:35:27 PM [HttpExceptionFilter] Object:
{
"message": "400 [GET /badrequest] has thrown an HTTP client error",
"exception": {
"response": {
"statusCode": 400,
"message": "Bad Request"
},
"status": 400,
"message": "Bad Request"
},
"headers": {
"host": "localhost:3000",
"user-agent": "insomnia/7.1.1",
"accept": "*/*"
}
}
[Nest] 96665 - 04/14/2020, 6:34:33 PM [HttpExceptionFilter] Object:
{
"message": "500 [GET /error] has thrown a critical error",
"headers": {
"host": "localhost:3000",
"user-agent": "insomnia/7.1.1",
"accept": "*/*"
},
"exception": {
"response": {
"statusCode": 500,
"message": "Internal Server Error"
},
"status": 500,
"message": "Internal Server Error"
}
}