如何在 Next js api 中为 get 和 post 方法使用不同的中间件?

How to use different middlewares for get and post methods in Next js api?

使用 express 我们可以为 get 和 post 请求使用不同的中间件, 例如

// GET method route
app.get('/users', function (req, res) {
    // handle get request
})
    
// POST method route
app.post('/users', auth, function (req, res) {
    // handle post request
})

如何在下一个 js 中执行相同的操作。

我对 next js 完全陌生。我可能只是遗漏了一些东西。

要在 API 路由中处理不同的 HTTP 方法,您可以在请求处理程序中使用 req.method

export default function handler(req, res) {
  if (req.method === 'POST') {
    // Process a POST request
  } else {
    // Handle any other HTTP method
  }
}

或者你可以使用像 next-connect 这样的包来启用像 API 这样的 expressjs。 在您的 api 文件中:

import nc from "next-connect";

const handler = nc()
  .use(someMiddleware())
  .get((req, res) => {
    res.send("Hello world");
  })
  .post((req, res) => {
    res.json({ hello: "world" });
  })
  .put(async (req, res) => {
    res.end("async/await is also supported!");
  })
  .patch(async (req, res) => {
    throw new Error("Throws me around! Error can be caught and handled.");
  });
export default handler