したがって、node.jsで実行しているserver.jsファイルに次のコードがあります。 Expressを使用してHTTPリクエストを処理しています。
app.post('/api/destinations', function (req, res) {
var new_destination = req.body;
console.log(req.body);
console.log(req.headers);
db.Destination.create(new_destination, function(err, destination){
if (err){
res.send("Error: "+err);
}
res.json(destination);
});
});
私はターミナルで以下を実行しています:
curl -XPOST -H "Content-Type: application/json" -d '{"location": "New York","haveBeen": true,"rating": 4}' http://localhost:3000/api/destinations
実行後、server.jsは以下を出力します。
{}
{ Host: 'localhost:3000',
'user-agent': 'curl/7.43.0',
accept: '*/*',
'content-type': 'application/json',
'content-length': '53' }
したがって、req.bodyは{}
。 body-parserが原因でcontent-typeが正しくなかった同様の問題に関する他のStack Overflowの投稿を読みました。しかし、content-typeがapplication/jsonであるため、それは問題ではありません。
リクエストの実際の本文を取得する方法はありますか?
前もって感謝します。
BodyParser.jsonも必要です。
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
Name属性をフォーム入力フィールドに配置するのを忘れた場合、req.bodyに{}が表示されることがあります。次に例を示します。
<input type="email" name="myemail" class="form-control" id="exampleInputEmail2" placeholder="Email address" required>
次に、req.bodyは{ myemail: '[email protected]' }
私がこの答えを投稿したのは、私が同様の問題に遭遇し、これが私のために働いたからです。
入力をフォームに追加するJavaScriptでフォームと入力を作成していることを確認します。それが私の問題でした。
yourForm.appendChild(yourInput);