packages/server: Return validation errors as JSON
This commit is contained in:
parent
2fdb208112
commit
c1d7077061
@ -1,6 +1,7 @@
|
|||||||
import {IMiddleware} from './IMiddleware'
|
|
||||||
import {IErrorHandler} from './IErrorHandler'
|
import {IErrorHandler} from './IErrorHandler'
|
||||||
import {ILogger} from '../logger/ILogger'
|
import {ILogger} from '../logger/ILogger'
|
||||||
|
import {IMiddleware} from './IMiddleware'
|
||||||
|
import {ValidationError} from '../validator'
|
||||||
|
|
||||||
export class ErrorApiHandler implements IMiddleware {
|
export class ErrorApiHandler implements IMiddleware {
|
||||||
constructor(readonly logger: ILogger) {}
|
constructor(readonly logger: ILogger) {}
|
||||||
@ -10,7 +11,17 @@ export class ErrorApiHandler implements IMiddleware {
|
|||||||
req.correlationId, err.stack)
|
req.correlationId, err.stack)
|
||||||
const statusCode = this.getStatus(err)
|
const statusCode = this.getStatus(err)
|
||||||
res.status(statusCode)
|
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 {
|
protected getStatus(err: Error): number {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ export class ValidationError extends Error {
|
|||||||
constructor(
|
constructor(
|
||||||
readonly errors: IValidationMessage[],
|
readonly errors: IValidationMessage[],
|
||||||
message?: string,
|
message?: string,
|
||||||
|
readonly status: number = 400,
|
||||||
) {
|
) {
|
||||||
super(
|
super(
|
||||||
message
|
message
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user