【发布时间】:2016-10-30 02:26:15
【问题描述】:
我目前正在使用 body-parser 尝试接收 POST 数据,但我的请求正文返回一个空对象。我似乎无法弄清楚问题是什么。有谁知道我的代码可能有什么问题?
这是我的代码:
// Script intialized by Gulp
const path = require('path')
const bodyParser = require('body-parser')
const express = require('express')
const app = express()
// Import registration and login functionality from database.js
const database = require('./database')
// Configuration
let jsonParser = bodyParser.json()
app.use(jsonParser)
app.use(express.static(path.join(__dirname, '../../docs')))
app.use(express.static(path.join(__dirname, '../../src')))
app.set('port', process.env.PORT || 8080);
app.set('view engine', 'pug')
app.set('views', 'src/pages')
app.listen(app.get('port'))
console.log('Listening on port: ' + app.get('port'))
// Routing
app.get('/', function(req, res) {
console.log('Welcome!')
res.render('index');
})
app.get('/login', function(req, res) {
console.log('Uhh, it looks like something went wrong here')
res.end()
})
// Link with database.js to link username and password attributes
app.post('/login', jsonParser, function(req, res) {
console.log(req)
console.log(req.body)
//database.login('ThisIsATestAccountBoi', 'TestPassword')
//console.log('Username: ' + username + '\n' + 'Password: ' + password)
res.end()
})
【问题讨论】:
-
代码看起来不错,你是如何发布数据的?
-
@adeneo 我使用 DOM 的 .submit() 方法提交表单数据。
-
好吧,您希望 JSON 作为唯一的数据,因为您在路由中直接使用了
jsonParser,所以如果您以x-www-url-form-urlencoded提交常规表单,显然不是只发送 JSON,是吗 -
@adeneo 我实际上使用了 enctype='application/json' 来设置数据,因此实际上不必如此。这只是默认设置。感谢您的建议:P
-
你的意思是它不必是什么?你有一个类似
app.post('/login', jsonParser, function(req, res) {的路由,其中jsonParser是解析JSON 请求对象并填充req.body的中间件,如果发送的数据不是纯JSON,则解析器失败,req.body为空?
标签: javascript node.js http express