chore: switch to zod for schema validation
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user