1
我試圖將快速應用程序的路由移動到另一個文件,但它工作正常,但是當我嘗試獲取發佈請求的主體時,它是未定義的。使用Node.js發佈請求內容
這裏是server.js文件:
var winston = require('winston');
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {colorize: true});
winston.add(winston.transports.File, { filename: 'server.err', level: 'error'});
winston.info('Starting server.');
var Firebase = require('firebase-admin');
var connection = require('./connection/firebaseConnection.json');
var express = require('express')
app = express();
var router = require('./srcs/router');
var bodyParser = require('body-parser');
try {
Firebase.initializeApp({
credential: Firebase.credential.cert({
projectId: connection.firebase.project_id,
clientEmail: connection.firebase.client_email,
privateKey: connection.firebase.private_key
}),
databaseURL: 'https://' + connection.firebase.project_id + '.firebaseio.com'
});
winston.info('Connected to Firebase.');
} catch (error) {
winston.error('Could not connect to Firebase : ' + error.code + ' : ' + error.message);
process.exit(1);
}
app.use('/', router);
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use(function(req, res, next) {
var origin = req.headers.origin;
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST', 'GET');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type,X-Requested-With');
res.setHeader('Access-Control-Allow-Credentials', true);
return next();
});
var server = app.listen(80, function() {
winston.info('Server listening on port 80.');
});
這裏是router.js
var express = require('express');
var router = express.Router();
var winston = require('winston');
router.post('/post', function(req, res) {
console.log(req.body);
});
module.exports = router;
我使用這個命令做了它的捲曲:
curl --data "title=test" http://localhost/post
並且router.post被觸發但值未定義。
嘗試在路由器中間件調用之前添加bodyParser中間件('app.use'調用)。 – Cristy
它工作,謝謝! – TakahT
我已經添加了答案。 – Cristy