SvelteKit API POST请求中如何获取请求体数据?
SvelteKit +server.js中获取POST请求体数据的方法
你在SvelteKit的$lib/components/newsletter.svelte组件中通过fetch发送JSON格式的POST请求,能正常收到服务器响应,但在api/newsletter/+server.js的POST处理函数中,直接打印requestEvent.request.body得到的是ReadableStream对象,无法提取出useremail字段。
解决方法
因为前端发送的是JSON格式请求体,在SvelteKit的server路由中,可通过requestEvent.request.json()方法直接解析请求体,该方法会返回解析后的JavaScript对象,直接解构就能获取useremail。
修改后的+server.js代码如下:
import { json } from '@sveltejs/kit' export async function POST(requestEvent) { // 解析JSON请求体并解构出useremail const { useremail } = await requestEvent.request.json() console.log("用户邮箱:", useremail) // 输出 abc@onetwothree.com // 此处可添加存入数据库的逻辑 // 示例:await db.insert(emailTable).values({ email: useremail }) const postresults = "POST handle -- return something..." return json(postresults) }
补充说明
- 若前端发送的是表单数据(
Content-Type: application/x-www-form-urlencoded),需使用await requestEvent.request.formData()解析,再通过formData.get('useremail')获取对应字段值。 request.body是原生Web API的ReadableStream对象,必须通过对应解析方法读取内容,SvelteKit遵循标准Request API的用法。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

