tynder-express-react-ts-esm-quickstart
Version:
A boilerplate for React client + Express server project using Tynder data validation library.
39 lines (30 loc) • 1.18 kB
text/typescript
import express,
{ Request,
Response,
NextFunction } from 'express';
import { ValidationContext } from 'tynder/modules/types';
import { deserializeFromObject } from 'tynder/modules/serializer';
import { validate,
getType } from 'tynder/modules/validator';
import { GreetingRequestMessage,
GreetingResponseMessage } from '../schema-types/greeting';
import GreetingSchema from '../schema-compiled/greeting';
const router = express.Router();
const schema = deserializeFromObject(GreetingSchema);
/* GET users listing. */
router.get('/', (req: Request, res: Response, next: NextFunction) => {
const ctx: Partial<ValidationContext> = {};
const validated = validate<GreetingRequestMessage>(req.query, getType(schema, 'GreetingRequestMessage'), ctx);
if (validated) {
const ret: GreetingResponseMessage = {
greeting: 'Hello',
to: validated.value.name,
};
res.status(200).json(ret);
} else {
res.status(400).json({
errors: ctx.errors,
});
}
});
export default router;