impr(server): log unknown validation errors (@fehmer) (#5777)

!nuf
This commit is contained in:
Christian Fehmer 2024-08-14 12:05:44 +02:00 committed by GitHub
parent f92c1023bb
commit 6458b248d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -77,7 +77,7 @@ export function addApiRoutes(app: Application): void {
function applyTsRestApiRoutes(app: IRouter): void {
createExpressEndpoints(contract, router, app, {
jsonQuery: true,
requestValidationErrorHandler(err, _req, res, next) {
requestValidationErrorHandler(err, req, res, _next) {
let message: string | undefined = undefined;
let validationErrors: string[] | undefined = undefined;
@ -90,16 +90,24 @@ function applyTsRestApiRoutes(app: IRouter): void {
} else if (err.body?.issues !== undefined) {
message = "Invalid request data schema";
validationErrors = err.body.issues.map(prettyErrorMessage);
}
if (message !== undefined) {
res
.status(422)
.json({ message, validationErrors } as MonkeyValidationError);
} else if (err.headers?.issues !== undefined) {
message = "Invalid header schema";
validationErrors = err.headers.issues.map(prettyErrorMessage);
} else {
next();
Logger.error(
`Unknown validation error for ${req.method} ${
req.path
}: ${JSON.stringify(err)}`
);
res
.status(500)
.json({ message: "Unknown validation error. Contact support." });
return;
}
res
.status(422)
.json({ message, validationErrors } as MonkeyValidationError);
},
globalMiddleware: [authenticateTsRestRequest()],
});