Server routes
Server routes are http request handler which can be anything from an api endpoint to hardcoded redirects. They can be registered in the src/server.js file via the routes function.
js
/** @param {import('crelte/server').ServerRouter} router */
export function routes(router) {
// redirect from /redirect to /redirected
router.get('/redirect', csr => Response.redirect(csr.frontendUrl('/redirected')));
// check if the number in the url matches the number in the body
router.post('/api/:number/matches', csr => {
const data = await csr.req.json();
if (typeof data.number !== 'number') {
throw new Response('expected number', { status: 400 });
}
const number = parseInt(csr.req.getParam('number'));
if (isNaN(number)) {
throw new Response('expected number param', { status: 400 });
}
return Response.json({ matches: data.number === number });
});
}Handler
A Handler is a function which takes a CrelteServerRequest and returns a WebApi Response. csr.req is a ServerRequest which is basically a WebApi Request with some added properties. The idear behind CreateServerRequest is to be really similar to the main Crelte type allowing to use known methods like query.
Query
If you only have a simple api, you might also be able to just use a handle function inside of a query. See Handle.