2017-07-29 6 views
0

私はNode.js、Express.js、およびMongoDBでAPIを構築しています。私がフォームを提出して、ルートにreqオブジェクトを使用すると、req.bodyオブジェクトは空です。Expressルートでリクエスト本文が空です

req.body戻っ{}私はhttps://localhost:3000/users/0で郵便配達を使用してブラウザを介してget_user関数を呼び出します。

app.js

var express = require('express'), 
    app = express(), 
    port = process.env.PORT || 3000, 
    bodyParser = require('body-parser'); 

var mongo_server = require('./server') 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: false})); 

var routes = require('./routes/users') 
routes(app); 

app.use(function(req, res) { 
    res.status(404).send({url: req.originalUrl + ' not found'}); 
}); 

app.listen(port); 

mongo_server.mongo_connection 

module.exports = app; 

userController.js

var mongoose = require('mongoose'), 
    user = mongoose.model('users'); 

exports.get_user = function(req, res) { 
    console.log(req.body.id); 
    user.findById(req.body.id, function(err, user) { 
     console.log(req.body); 
     if(err) 
      res.send(err); 
      res.json(user); 
     }); 
    }; 

userRoutes.js

module.exports = function(app) { 
    var users = require('../controllers/userController'); 
    app.route('/users/:userid') 
     .get(users.get_user); 
} 
+0

郵便配達員経由で何をサーバーに送信していますか? –

答えて

2

私はあなたがリクエストパラメータとリクエストボディが混乱していると思います。

{ 
    "username": "jd123", 
    "email": "[email protected]", 
    "name": "John Doe" 
} 

しかし、あなたの場合は、:あなたは、たとえば、新しいユーザーを作成するには、サーバーにJSONを送信するときに、このようなPOSTリクエストのように、ペイロードなどの要求に情報を送信するとき、要求本体があります

/users/:userid 

あなたはGETリクエストとに移動することができます::

/users/0 
あなたは パラメータ、あなたが設定したようにURLを通過したものを探しています0

そして0を文字列としてreq.params.useridではなくreq.body.idから得ることができます。リクエストパラメータとボディは異なります。パラメータは、ユーザープロファイルページなどのさまざまなルートに移動するためのもので、URLが変化し、ユーザーIDでどのルートに移動するかを反映します。

ボディは、POSTing、PATCHing、PUTingなどのリクエストのペイロードに使用され、サーバーで更新または作成するものに関する情報を提供します。

+0

ありがとうございました!私はリクエストパラメータについて混乱していました。 – user3583158

関連する問題