如何向Vercel上部署的API发起请求?请求返回异常求助
问题分析与解决方案
你的API请求返回客户端页面内容,核心原因是vercel.json的路由规则把所有请求(包括/api开头的)都转发到了客户端根路径,导致Node.js API没有接收到请求。
解决方案:调整路由优先级
修改vercel.json,让API路径的请求优先被Node.js处理,剩下的请求再交给客户端路由:
{ "version": 2, "builds": [ { "src": "./index.js", "use": "@vercel/node" }, // 如果客户端是静态资源/单页应用,添加这个构建规则(根据实际客户端类型调整) { "src": "client/**", "use": "@vercel/static" } ], "routes": [ // 优先处理所有/api开头的请求 { "src": "/api/(.*)", "dest": "/index.js" }, // 处理客户端路由:单页应用需指向入口HTML,静态文件则直接映射路径 { "src": "/(.*)", "dest": "/client/index.html" } ] }
关键说明
- 路由匹配顺序:Vercel按路由数组的顺序匹配请求,因此API规则必须放在客户端路由规则前面,避免被覆盖。
- 客户端路径适配:如果你的客户端不是单页应用,而是普通静态文件结构,第二条路由的
dest可以改为/client/$1,直接映射请求到client目录下的对应文件。 - API入口验证:确保
index.js中已通过routes.js正确处理/api开头的请求逻辑,比如解析路由、处理业务并返回接口数据。
内容的提问来源于stack exchange,提问作者Life Star
相关产品推荐
相关产品推荐

