next.js 使用vercel无服务器函数获取与发布请求

dzjeubhm  于 2023-05-06  发布在  其他
关注(0)|答案(1)|浏览(180)

像express和fastify这样的Nodejs框架允许用户像这样声明路由

fastify.get("/:id/projects", async (request: GetProjectRequest, reply) => {})

其将特定路由绑定到特定类型的请求。
vercel文档建议如下创建函数:

export default async function handler(request, event) {
  return Response.json({
    success: true,
  });
}

对于一个给定的vercel无服务器端点,用什么样的规范方式来表达允许的请求方法?

eivnm1vs

eivnm1vs1#

基本上,当一些方法不被允许时,你可以决定你想要返回什么。您的函数将为每个方法执行:

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

你也可以使用类似的https://github.com/Howard86/next-api-handler(或任何其他类似的库或助手),它允许你制作类似的界面,如express,fastify等:

// in /pages/api/users.ts
import { RouterBuilder, ForbiddenException } from 'next-api-handler';
import { createUser, type User } from '@/services/user';

const router = new RouterBuilder();

router
  .get<string>(() => 'Hello World!')
  .post<User>(async (req) => createUser(req.body))
  .delete(() => {
    throw new ForbiddenException();
  });

export default router.build();

相关问题