node.js - 从 Axios/React 将 json 发布到 Node/Express 服务器的问题
问题描述
我目前正在使用 Node.js 在后端使用 Express 并在前端使用 React.js 来开发 Web 应用程序。在尝试通过 axios 将用户数据发布到节点服务器时,我遇到了一个问题。当我使用 x-www-form-urlencoded 内容类型发布帖子时,前端将发布到服务器,但发布数据的整个 JSON 出现在第一个元素的关键字段中。当我将内容类型更改为 json 时,它会停止从前端发布任何内容。我已经尝试卷曲到服务器,并且卷曲 JSON 帖子将被服务器接受。
反应代码发布到服务器
handleSubmit()
{
var form=this;
var axiosConfig = {
headers: {
'content-type': 'application/json; charset=utf-8'
}
}
axios.post('http://localhost:8080/api/login/', {
'username': form.state.username,
'password': form.state.password
}, {headers: {'content-type': 'application/json'}});
};
api 端点的服务器代码
//From server.js
const express=require('express');
const session=require('express-session');
const bodyParser=require("body-parser");
const path = require('path');
var login = require('./routers/login')
var port = process.env.PORT || 8080;
var app=express();
app.use(session({'secret': 'thealphabetbackwardsiszyxwvutsrqponmlkjihgfedcba'}));
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
//...
app.use('/api/login', login);
//from login.js
/* Router for login system
When user attempts to log in, check their credentials
If the user successfully logs in, create a session
If user enters invalid credentials prompt them
*/
const path = require('path');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const user = require("./../models/UserSchema")
mongoose.connect('mongodb://localhost/newt');
const express = require('express');
const router = express.Router();
router.get('/', function (req, res)
{
console.log("Test");
})
router.post('/', function(req, res)
{
console.log(req.body);
res.end();
})
// To create test user use path localhost:8080/api/login/testing
router.get('/test', function (req, res)
{
var db = mongoose.connection;
var test = new user({
username: "joesephschomseph",
email: "testUser@test.com",
fname: "Joe",
lname: "Schmoe"
})
test.save();
console.log("Created test user!");
});
module.exports = router
解决方案
- npm install --save const body-parser
- 在 app.js 中包含 const bodyparser = require('body-parser');
app.use(bodyparser.urlencoded({ extended: false })); app.use(bodyparser.json());
从您的“用户名”和“密码”中删除单引号
- 控制台.log(req.body);
推荐阅读
- ios - 我无法安装 WebDriverAgentRunner。'CocoaAsyncSocket / GCDAsyncSocket.h' 文件未找到
- php - 我在哪里可以将客户的选择保存在我的电子商务商店中,这样我就可以看到购买了什么
- qt - Qt - FormLayout - 标签下方的Qline
- vue.js - Axios POST 请求缺少有效负载
- python - 将最后一小时的平均值添加到 pandas 数据帧的每个样本
- powershell - 在 PowerShell 选择对象中未选择列
- android - 模块可以使用包含在另一个模块中的视图类而不依赖它。如何?
- javascript - 在 Javascript 中使用 googleapis 发布我的 youtube 频道的新描述
- c - 在 C 中使用 cot(x)
- python - 在词典的帮助下制作标记的词性语料库