@billyen2012/next-api-router
v1.11.3
Published
A next.js api router that feels like express.js
Downloads
59
Maintainers
Readme
Home Page
- Please use home page for all api references. It aslo has more info like how to setup Graphql, Swagger, supported express.js middlewares, etc.
Installation
npm i @billyen2012/next-api-router
or for yarn
yarn add @billyen2012/next-api-router
Quick Start
under the /app
dir, create a folder structure as shown below
app/
└── api/
└── [...]/
└── route.js
- The
[...]
means to catch all the the request. This is required sinceNextApiRouter
will create a separete route table to match the request url.
Then in the route.js
, add the following
import NextApiRouter from "@billyen2012/next-api-router";
const app = NextApiRouter({
timeout: 20 * 1000,
apiFolderPath: "/api", // '/api' will be the default
ejsFolderPath: "/src/app/views", // need include all folder encounter from the route (there is no default value). No need to set this up if you are not using ejs
});
app.get("/hello", (req, res, next) => {
res.send("Hello");
});
const handler = app.handler();
export const dynamic = "force-dynamic";
export const GET = handler;
export const POST = handler;
export const PUT = handler;
export const DELETE = handler;
The Base Route Problem
The example shown in the quick start section will not process the base route such as app.get("/")
. If you do need the base route to be open, you can do the following.
app/
└── api/
├── [...]/
│ └── route.js
└── route.js
And then have your const export app = NextApiRouter()
created in some other folder or file and then import them to both route.js