SvelteKit中/api目录下POST接口返回405错误的求助
问题解决思路
先看你代码里的两个致命错误,这就是导致405错误的根源:
1. 未在处理函数中解构request参数
你的POST函数参数只写了({ cookies }),但代码里调用了await request.json()——request变量根本没定义,直接触发运行时错误,导致服务器无法正确处理POST请求,进而返回错误的状态码。修正后参数应该包含request:
// /src/routes/api/login/+server.ts import { redirect, json } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; export const POST: RequestHandler = ({ request, cookies }) => { const data = await request.json(); // ... 你的业务逻辑 return json({ employee: { email: data.email, id: 123 }}); };
2. 缺失json函数的导入
你用了return json(...)但没从@sveltejs/kit导入json,这同样会触发运行时错误,必须补上这个导入。
关于移到/api目录外正常工作的原因
大概率是你移动文件时无意中修正了这些错误,或者非/api路由的错误处理 fallback 行为不同,但核心问题还是代码本身的语法/逻辑错误。
额外排查建议
- 打开服务器终端,查看请求时的错误日志,应该能直接看到
request is not defined或json is not defined的报错,这是最直接的定位方式 - 检查/api目录下是否存在其他冲突的路由文件(比如误加的
+page.svelte),导致请求匹配异常 - 确认你的SvelteKit版本没有已知的/api路由相关bug(不过你使用数月未遇到,这个概率极低)
内容的提问来源于stack exchange,提问作者Vickckvid
相关产品推荐
相关产品推荐

