2015-12-01 34 views
8

Sto utilizzando Angular 1.3 e node.js 0.12.2 per un progetto. Sto colpendo l'API node.js utilizzandoImpossibile ottenere i dati della richiesta http http.post in Node.js res.body

$http.post("url", request_data){} 

E sul lato server utilizzando questo:

console.log(req.body) 

Ma ogni volta l'API viene chiamato, diventa oggetto vuoto {} per request_data, Impossibile ottenere ciò che il il problema è Ho usato body_parser come questo:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); // support json encoded bodies 
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies 

provato anche l'aggiunta di contenuti di tipo intestazione angolare $ http come:

headers : {'Content-Type': 'applicatio n/x-www-form-urlencoded'} 

Ma non ottenere i dati di richiesta.

EDIT:

Node.js codice:

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

Nota: scheda di rete Developer strumento che mostra i dati, io mando, nella richiesta di intestazione in modo corretto, ma Node.JS server non riceve in req.body. In POSTman ottenere i dati è correttamente in risposta.

+0

si può condividere una linea nodejs codice –

+0

req.body o res.body – gaurav5430

+0

è: req.body –

risposta

0

La mia ipotesi migliore è che il tuo URL di richiesta $ http angolare punta a un punto finale negativo.

Angularjs

// data to post nodejs server 
var _data = { 
    'message': 'Can I help you?' 
}; 


// angularjs $http post request 
$http.post('/api/url', _data).then(function(respond){ 
    // if success 
    console.log(respond); 
}, function(error){ 
    // if an error 
    console.error(error); 
}); 

Nodejs

// router function 
function something(req, res) { 

    // console.log the request body 
    console.log(req.body); 

    // respond JSON object 
    var _respond = { 
     'status': 200 
    }; 

    // expressjs respond a JSON with status code 200 
    res.status(200).json(_respond); 
} 

// register route URL 
router.post('/api/url', something); 

Nota che gli URL punto finale di codice sono gli stessi: /api/url

Pertanto il tuo esempio di codice in precedenza zione, you'r mancano/

+0

No, il punto finale è corretto, ho usato l'URL fittizio per spiegare il problema, Node.js è in grado di ottenere la richiesta. Sto usando $ .ajax, invece di $ http. Ancora c'è un problema con il formato dei dati. Quindi abbiamo cambiato il codice node.js. per gestire i dati richiesti. –

+0

Dopo aver utilizzato $ .ajax, node.js ha ottenuto i dati dell'intestazione, ma non mostrava la matrice vuota. –

1

alcune idee:

  • Forse un errore URL?Assicurarsi che non si utilizza un prefisso come app.use('/api', router);
  • sguardo al Content-Type:/

applicazione x-www-form-urlencoded ->'var1="SomeValue"&var2='+SomeVariable application/json; charset = UTF 8 ->{var1:"SomeValue", var2:SomeVariable}

  • Si potrebbe utilizzare $http più esplicitamente:

$http({ 
 
    url: '...', 
 
    method: 'POST', 
 
    headers: { 
 
    'Content-Type': 'application/x-www-form-urlencoded' 
 
    }, 
 
    data: 'var1="SomeValue"&var2='+SomeVariable 
 
});