You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:15:09