This repository has been archived on 2026-01-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
nodejs-template-with-typesc…/src/server/server.ts
2023-09-08 16:46:38 +02:00

50 lines
1.2 KiB
TypeScript

import * as bodyParser from 'body-parser';
import cors from 'cors';
import express, { Request, Response } from 'express';
import session from 'express-session';
import helmet from 'helmet';
import { z } from 'zod';
import { fromZodError } from 'zod-validation-error';
import { addition } from '../utils/addition';
import { logger } from '../utils/logger';
const server = express();
server.use(cors());
server.use(helmet());
server.disable('x-powered-by');
server.set('trust proxy', 1);
server.use(
session({
secret: 's3Cur3',
name: 'sessionId'
})
);
server.use(express.json());
server.use(bodyParser.json());
const schema = z.object({
value: z.number()
});
server.post('/', async (req: Request, res: Response) => {
logger.info(`POST / with ${JSON.stringify(req.body)}`);
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;
const result = await addition(value);
return res.json({
response: result
});
});
export default server;