@billyen2012/next-api-router
TypeScript icon, indicating that this package has built-in type declarations

1.11.3 • Public • Published

A next.js api router that feels like express.js

Visit home page here !

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 since NextApiRouter 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


For more info, checkout the home page here !

Package Sidebar

Install

npm i @billyen2012/next-api-router

Weekly Downloads

7

Version

1.11.3

License

MIT

Unpacked Size

94.9 kB

Total Files

5

Last publish

Collaborators

  • billyen2012