REST controller for Next.js

How does it work?

Create restful controllers in Next.js


Inside /pages/api/auth/[...handler]

(filename must be a rest operator if you want customized URLs, but you can also use normal api handlers filenames, though they have to share the same URL in your controller)

// inside /pages/api/auth/[...handler]

import { Controller } from "next-rest-controller"

// The first argument is the 'base' segment that will be used to map the correct url.
const AuthHandler = Controller("/auth", {
    async "GET /auth"(req, res) {
    async "GET /[id]/info"(req, res) {
        res.send("Info for " +
    // Like Express
    async "GET /:id/info/:slug"(req, res) {
        res.send("Info for " +


When adding a handler/method, it should start with an HTTP verb, followed by a space, and a url to handle (with or without query params using square brackets, or like Express, by placing : before).

Sending, for example, a POST request that would be handled by a GET handler, will send a 405 status code


View Github