diff --git a/packages/server/src/middleware/ErrorApiHandler.ts b/packages/server/src/middleware/ErrorApiHandler.ts index 48ce70f..275e14c 100644 --- a/packages/server/src/middleware/ErrorApiHandler.ts +++ b/packages/server/src/middleware/ErrorApiHandler.ts @@ -1,6 +1,7 @@ -import {IMiddleware} from './IMiddleware' import {IErrorHandler} from './IErrorHandler' import {ILogger} from '../logger/ILogger' +import {IMiddleware} from './IMiddleware' +import {ValidationError} from '../validator' export class ErrorApiHandler implements IMiddleware { constructor(readonly logger: ILogger) {} @@ -10,7 +11,17 @@ export class ErrorApiHandler implements IMiddleware { req.correlationId, err.stack) const statusCode = this.getStatus(err) res.status(statusCode) - res.end('An error occurred') + if (err instanceof ValidationError) { + res.json({ + error: err.message, + errors: err.errors, + }) + return + } + res.json({ + error: 'An error occurred', + errors: [], + }) } protected getStatus(err: Error): number { diff --git a/packages/server/src/validator/ValidationError.ts b/packages/server/src/validator/ValidationError.ts index 27aab28..d310f55 100644 --- a/packages/server/src/validator/ValidationError.ts +++ b/packages/server/src/validator/ValidationError.ts @@ -5,6 +5,7 @@ export class ValidationError extends Error { constructor( readonly errors: IValidationMessage[], message?: string, + readonly status: number = 400, ) { super( message