chore: switch to zod for schema validation

This commit is contained in:
Riccardo
2023-08-30 21:18:34 +02:00
parent a36daaaec3
commit ce84aa497f
3 changed files with 26 additions and 20 deletions

View File

@@ -2,7 +2,8 @@ import * as bodyParser from 'body-parser';
import cors from 'cors';
import express, { Request, Response } from 'express';
import helmet from 'helmet';
import { Validator } from 'jsonschema';
import { z } from 'zod';
import { fromZodError } from 'zod-validation-error';
import { addition } from '../utils/addition';
import { logger } from '../utils/logger';
@@ -12,20 +13,19 @@ server.use(express.json());
server.use(bodyParser.json());
server.use(helmet());
const validator = new Validator();
const schema = {
id: '/PostRequest',
type: 'object',
properties: {
value: { type: 'number' }
},
required: ['value']
};
const schema = z.object({
value: z.number()
});
server.post('/', async (req: Request, res: Response) => {
logger.info(`POST / with ${JSON.stringify(req.body)}`);
if (!validator.validate(req.body, schema).valid) {
return res.status(400).json({ message: 'Malformed query parameters' });
try {
schema.parse(req.body);
} catch (err) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const validationError = fromZodError(err as any);
return res.status(400).json({ message: validationError.message });
}
const { value } = req.body;