2015-09-17 3 views
6

Я работаю над приложением, которое использует узел, экспресс, mysql на стороне сервера. Я написал серверные API-интерфейсы на файле server.js, и когда я пытаюсь получить доступ к тем, кто использует Postman, тогда req.body всегда не определено.req.body undefined на стороне сервера

это моя конфигурация server.js.

var express = require('express'); 
var mysql = require('mysql'); 
var cors = require('cors'); 
var bodyParser = require('body-parser'); 
var wrench = require("wrench"); 
var fs = require('fs'); 
var path = require("path"); 
var mkdirp = require('mkdirp'); 
var walk = require('walk'); 
var fse = require('fs-extra'); 
var multipart = require('connect-multiparty'); 
var multipartMiddleware = multipart(); 
var crypto = require('crypto'); 

app.use(cors()); 

app.use(bodyParser.urlencoded({limit: '50mb',extended: false})); 
app.use(bodyParser.json({limit: '50mb'})); 

var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: 'pass', 
    database: 'dbname' 
}); 


connection.connect(function(err) { 
    if (!err) { 
     console.log("Database is connected ... \n\n"); 
    } else { 
     console.log("Error connecting database ... \n\n"); 
    } 
}); 

app.post('/urlreq', function(req, res){ 
    console.log(req.body); 
} 
app.listen(3000, function(){ 
    console.log("Rest Demo Listening on port 3000"); 
}); 

Когда я пытаюсь отправить что-то в тело в почтальоне, тогда req.body приходит пустым на стороне сервера.

+1

Are вы отправляете запрос 'multipart/form-data'? Если это так, это не работает, потому что 'bodyparser' не обрабатывает этот тип тела – Curious

+1

Typo в' app.listem' меняет его на 'app.listen' – GuyT

+0

@ Любопытно, что я не использую multipart для форматирования данных, отправляющих форму данные как объект. – ashishkumar148

ответ

3

Если вы отправляете multipart/form-data, он не работает, потому что bodyparser не обрабатывает этот тип кузова.

В этом случае, добавив следующую строку следует исправить:

app.use(multipartMiddleware); 

Сформировать docs:

multipart/form-data по умолчанию, кодирующий веб-формы используется для передачи данных

+0

спасибо! он решил проблему. – ashishkumar148

0

Вы также можете использовать в качестве промежуточного программного обеспечения. Также слушайте по порту. добавьте следующие строки в коде -

var app = express(); 

app.use(function(req, res, next) {  
    console.log('Current User:', req.body); 
    next(); 
}); 

app.post('/url', function(req,res){ 
    console.log(req.body) 
}); 


app.listen(3000, function(){ 
    console.log('Express server listening on port 3000'); 
}); 
+0

Да, но все же такая же проблема. приближается. – ashishkumar148

0

Try добавить:

var express = require('express'); 
var app = express(); 
[...] 

// Last stack 
app.listen(3000, function(){ 
    console.log("Rest Demo Listening on port 3000"); 
}); 
+0

еще такой же проблема. – ashishkumar148