Axios发送邮件正文,但通过fetch和Postman未定义正文

时间:2020-10-29 13:50:39

标签: javascript node.js axios fetch postman

我无法使用fetch或Postman发送邮件正文,但可以使用Axios发送邮件正文。

Axios返回:User name = Fred, password is Flintstone

但是Postman和fetch都返回User name = undefined, password is undefined

如何获取带有邮递员和邮递员的邮件正文?

服务器文件

const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const axios = require("axios");

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.post("/login", (req, res) => {
  var user_name = req.body.user;
  var password = req.body.password;
  console.log("User name = " + user_name + ", password is " + password);
  res.end("yes");
});

app.listen(3000, () => {
  console.log("Started on PORT 3000");
});

Axios

axios.post("http://localhost:3000/login", {
  user: "Fred",
  password: "Flintstone",
});

获取(客户端)

fetch("http://localhost:3000/login", {
  method: "POST",
  body: JSON.stringify({ user: "Fred", password: "Flintstone" }),
  mode: "no-cors",
});

邮递员

enter image description here

3 个答案:

答案 0 :(得分:2)

在Postman中,您尝试将JSON数据作为文本发送。将邮递员中从Text发送的数据类型更改为JSON

enter image description here

此外,建议您在bodyParser文件中保留1个server

对于fetch(),我建议您看一下这个问题,必须进行一些调整Fetch: POST json data

答案 1 :(得分:2)

this并非默认发布JSON,这就是为什么您必须显式编码主体的原因。您还需要告诉要发送JSON的服务器。

未经CORS的许可,您无法执行此操作,因此您不得将模式设置为fetch

no-cors

Postman的问题可能是相同的(但在UI屏幕截图中不可见):您需要设置Content-Type标头。

答案 2 :(得分:-2)

尝试一下:

app.post("/login", (req, res) => {
  var user_name = req.body.user;
  var password = req.body.password;
  console.log("User name = " + user_name + ", password is " + password);
  res.json({ "user name": user_name, "password": password });
});