2015-12-01 13 views
8

プロジェクトにAngular 1.3とnode.js 0.12.2を使用しています。私は、この使用して

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

とサーバ側のを使ってNode.jsのAPIを打っています:

console.log(req.body) 

をしかし毎回APIが呼び出され、それがrequest_dataのために空のオブジェクト{}を取得し、何を取得できません。問題はです。私はこのようなbody_parserを使用しています

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

はまた、角度$ HTTPのcontent-typeヘッダを付加しようとしたことがあり:

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

しかし、要求データを取得していません。

EDIT:

のNode.jsコード:

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

注:開発ツールのネットワークタブはデータを示し、私が正しくリクエストヘッダに、送信していますが、サーバーが受信していないのNode.js req.bodyにあります。 POSTmanがデータを取得中で、正しく応答しています。

+0

あなたは1本のラインを共有することができますが、コード –

+0

req.bodyまたはres.body – gaurav5430

+0

をnodejsそれは次のとおりです。req.body –

答えて

0

角度の$ httpリクエストURLが悪いエンドポイントを指していると思います。

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); 

注コードのエンドポイントのURLは同じであること:あなたのコードのサンプルとして

したがって/API/URL上記の質問にションは、you'rはいくつかのアイデア/

+0

いいえ、エンドポイントは正しいです、私は問題を説明するためにダミーのURLを使用しました、Node.jsは要求を得ることができます。私は$ httpの代わりに$ .ajaxを使用しています。それでもデータ形式に問題があります。そこで、node.jsコードを変更しました。要求されたデータを処理します。 –

+0

$ .ajaxを使用した後、node.jsにヘッダーデータがありますが、空の配列が表示されませんでした。 –

1

を逃す:たぶん

  • URLエラー? - ;のcharset = UTF->'var1="SomeValue"&var2='+SomeVariable アプリケーション/ JSON

アプリケーション/ x-www-form-urlencodedで:あなたはContent-Typeapp.use('/api', router);

  • ルックのような接頭辞を使用していないことを確認してください8 - >{var1:"SomeValue", var2:SomeVariable}

    • あなたはより多くの明示的$httpを使用することができます。

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

  • 関連する問題