[解決済み] 投稿時にreq.bodyが空になる
質問
突然ですが、この現象が私のすべてのプロジェクトで起こっています。
nodejsでexpressとbody-parserを使って投稿するたびに
req.body
は空のオブジェクトです。
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded())
// parse application/json
app.use(bodyParser.json())
app.listen(2000);
app.post("/", function (req, res) {
console.log(req.body) // populated!
res.send(200, req.body);
});
ajaxとpostmanを経由すると、常に空です。
ただし、curl経由
$ curl -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://localhost:2000/
意図したとおりに動作します。
手動で設定してみた
Content-type : application/json
を表示させることができますが、その場合は必ず
400 bad request
これで気が狂いそうです。
body-parserの何かが更新されたのかと思いましたが、ダウングレードしてもダメでした。
何かお手伝いできることがあれば、よろしくお願いします。
解決方法は?
Postmanでcontent typeの3つのオプションから "X-www-form-urlencoded" を選択すると、うまくいくはずです。
また、エラーメッセージをなくすには、置換してください。
app.use(bodyParser.urlencoded())
とともに。
app.use(bodyParser.urlencoded({
extended: true
}));
参照 https://github.com/expressjs/body-parser
body-parser' ミドルウェアは JSON と urlencode されたデータのみを扱い、マルチパートは扱いません。
SujeetAgrahari が言及したように、body-parser は現在 express.js に内蔵されています。
使用方法
app.use(express.json());
を使用して、最近のバージョンではJSONボディ用に実装されています。URLエンコードされたボディ(HTTPフォームのPOSTで生成されるようなもの)には
app.use(express.urlencoded());
関連
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] Json Web Token verify() return jwt malformed
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み】ブロックスコープの宣言は、ストリクトモード以外ではまだサポートされていません。
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み] TypeError: コールバックはnodejsの関数ではありません。
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] ExpressJS : res.redirect()が期待通りに動作しない?
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] バルク更新を行う。
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。