This package is only some utility classes on top of express and zod to develop a small express server with validations with zod
import { Server, Router } from 'coder-server';
const userRouter = new Router('/user');
userRouter
.get(
'/',
(req, res) => {
res.okResponse('this generates a 200 Http response');
},
(req, res, next) => {
console.log('this is a middleware');
next();
},
)
.get('/:id', (req, res) => {
res.userErrorResponse('this generates a 400 error response');
});
const server = new Server();
server.setRouter(userRouter);
server.start(3000);
You can also use validation middlewares
import { z } from 'zod';
import { Router, validateBody, validateParams, validator } from 'coder-server';
const UserDto = z.object({
name: z.string().min(3).max(255),
email: z.string().email(),
role: z.enum(['admin', 'user']),
});
const Id = z.object({
id: z.string().uuid(),
});
const userRouter = new Router('/user');
userRouter.put(
'/:id',
(req, res) => {
res.okResponse('everything went ok');
},
validateParams(validator(Id)),
validateBody(validator(UserDto)),
);
There are two forms of setting routes on the server level:
server.setRouter(userRouter).setRouter(catsRoute);
//or
server.setRouters([userRouter, catsRoute]);
It is possible to set sub routes on the router level:
const userRouter = new Router('/user');
userRouter.subRoute(addressRouter);