@tea062024/asperiores-quae-ut
v1.0.0
Published
File-based routing plugin for fastify. Inspired from [fastify-autoroutes](https://github.com/GiovanniCardamone/fastify-autoroutes).
Downloads
7
Maintainers
Keywords
Readme
@tea062024/asperiores-quae-ut
File-based routing plugin for fastify. Inspired from fastify-autoroutes.
src/
├── server.ts
└── routes/
├── index.ts (ALL)
├── post.ts (POST)
└── nested/
└── route.ts (GET | POST | PUT | DELETE)
📖 Table of Contents
🚀 Install
npm install --save @tea062024/asperiores-quae-ut
📗 Usage:
⚠️ Files ending with
.test.js
or.test.ts
or starting with_
or.
get ignored by the router
Register Plugin
import fastify from "fastify";
import fileRouting from "@tea062024/asperiores-quae-ut";
const server = fastify({
ignoreTrailingSlash: true // Recommended
});
server.register(fileRouting, {
dir: "./routes" // Required
prefix: "" // Optional
});
Create single route
import { createRoute } from "@tea062024/asperiores-quae-ut";
export default createRoute({
schema: {
params: Type.Object({
name: Type.String(),
}),
},
handler: (req, res) => {
// Type inference if using type providers
// (with support for type validation as well!)
res.send(req.params.name);
}
});
Create multiple routes in the same file
import { createRoutes, createRoute } from "@tea062024/asperiores-quae-ut";
export default createRoutes({
get: createRoute({
schema: {
params: Type.Object({
name: Type.String(),
}),
},
handler: (req, res) => {
// Type inference if using type providers
// (with support for type validation as well!)
res.send(req.params.name);
}
}),
post: createRoute({
handler: (req, res) => {
res.send(req.body);
}
})
});
Overriding the type provider
I've only managed to find one way of overriding the type provider (for the route schema). (If anyone knows a better way, please create an issue)
(Example using fastify-type-provider-typebox)
import { FastifySchema } from 'fastify';
import { TypeBoxTypeProvider } from '@fastify/type-provider-typebox';
import { type Route, createRoute as _createRoute } from '@tea062024/asperiores-quae-ut';
export const createRoute = <Schema extends FastifySchema>(opts: Route<Schema, TypeBoxTypeProvider>) => _createRoute<Schema, TypeBoxTypeProvider>(opts);
After you've done that, use your new exported function instead of the library's exported function.
📄 License
This project is licensed under MIT