小程序后端接口:来自前端的axiospost请求未在节点 js后端接收

我正在尝试学习节点 js。我 tryng 通过前端从 axios 发出一个 post 请求,但是节点 js 用空对象响应。

这里是代码

节点 js

var express = require("express");
var app = express();
var cors = require("cors");
app.use(cors());
var bodyPr = require("body-pr");
var urlencodedPr = bodyPr.urlencoded({ extended: false });
// This responds with "Hello World" on the homepage
app.get("/", function (req, res) {
  console.log("Got a GET request for the homepage");
  res.send("Hello GET");
});
app.post("/", urlencodedPr, function (req, res) {
  console.log(req.body);
  res.send("Hello GET");
});
var server = app.listen(8081, function () {
  var host = server.address().address;
  var port = server.address().port;
  console.log("Example app listening at http://%s:%s", host, port);
});

前端

axios.post("http://localhost:8081/", { body: "dan" })
  .then((e) => console.log(e))

响应是一个空对象。

我该怎么办?

2

默认情况下,您的 axios 代码:

axios.post("http://localhost:8081/",{body:"dan"}).then((e) => console.log(e))

将 POST 请求的正文作为 JSON 发送。直接从axios doc引用。

默认情况下,axios 将 JavaScript 对象序列化为 JSON

因此,您需要 Express 服务器上的 JSON 中间件来读取和解析该 JSON 正文。如果没有正在寻找特定内容类型的中间件,POST 请求的正文将不会被读取或解析,并且req.body将保持为空。

 app.post('/', express.json(), function (req, res) {
   console.log(req.body);
   res.send('Hello POST');
 });

请注意,不需要单独加载 body-pr 模块,因为它是 Express 内置的。

或者,如果您希望将请求作为application/x-www-form-urlencodedcontent-type 发送,那么您需要以这种方式对数据进行编码,并将其作为 axios 请求中的数据发送,并适当地设置 content-type。

这些请求体可以由express.urlencoded()中间件以与express.json()相同的方式处理。

1

您应该使用 bodyPr.json(),以获取在 req.body 中发送的数据。

var bodyPr = require('body-pr');
app.use(bodyPr.json());
0

我们应该在使用中间件以以下方式访问它之前解析请求正文

app.use(bodyPr.json());

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(738)
Ios邮箱:我的应用程序如何跳转到iOS默认邮箱
上一篇
Ios怎么玩死神vs火影:iOS版本vs.iOSsdk
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(32条)