苗条/工兵:POST 时身体为空

Tob*_*ing 5 javascript fetch node.js svelte sapper

我正在尝试使用 sapper 创建登录表单,但在尝试测试基本 POST 获取时遇到以下问题。

在 中routes/login/login.svelte,我有以下代码,在单击按钮时调用:

<script>
  let data = {"email":"test"};

  const handleLogin = async () => {
    const response = await fetch("/login/login", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: data
    });
  };
</script>
Run Code Online (Sandbox Code Playgroud)

这应该送什么是dataroutes/login/login.js其中具有下面的代码:

export async function post(req, res, next) {
  res.setHeader('Content-Type', 'application/json');
  var data = req.body;
  return res.end(JSON.stringify(data));
}
Run Code Online (Sandbox Code Playgroud)

我的问题是这仅返回{}而不是在苗条页面中发送的数据。关于为什么会发生这种情况以及我哪里出错的任何想法?谢谢。

Ste*_*aes 4

发送数据时,您还应该在那里将其字符串化

   body: JSON.stringify(data)
Run Code Online (Sandbox Code Playgroud)

另外,请确保您已安装body-parser并将其作为中间件添加到服务器中,此包将帮助您处理在正文中发送 json 数据的请求。

polka() // You can also use Express
    .use(
        compression({ threshold: 0 }),
        sirv('static', { dev }),
        bodyparser(),
        sapper.middleware()
    )
    .listen(PORT, err => {
        if (err) console.log('error', err);
    });
Run Code Online (Sandbox Code Playgroud)