packages/server: Return validation errors as JSON

This commit is contained in:
Jerko Steiner 2019-03-25 13:19:20 +08:00
parent 2fdb208112
commit c1d7077061
2 changed files with 14 additions and 2 deletions

View File

@ -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 {

View File

@ -5,6 +5,7 @@ export class ValidationError extends Error {
constructor(
readonly errors: IValidationMessage[],
message?: string,
readonly status: number = 400,
) {
super(
message