ホーム>source

私はNodeJSとExpress(およびmongo、ソケットなどのようなもの)でAPIに取り組んでいますが、私は信じている非常に単純なステップで立ち往生しています。POST req から情報を取得しようとしているだけですオブジェクトですが、 req.body にアクセスしようとするとエラーが発生します

ここに私が持っているものがあります:

<前>ウィズウィズ

var express = require('express'), http = require('http'), path = require('path'), fs = require('fs'), io = require('socket.io'); dynroute = require('dynroute'); var app = express(); app.set('port', process.env.PORT || 3999); app.use(express.favicon()); app.use(express.logger('dev')); app.use(app.router); app.use(express.bodyParser()); app.post('/user', function(req, res) { console.log(JSON.stringify(req.body)); res.send(req.body.self); }); http.createServer(app).listen(app.get('port'), function () { console.log('App Server is now running at:' + app.get('port')); }); で私はウィズウィズを取得しますそして、 console.log(JSON.stringify(req.body)); 私はウィズウィズを取得します

私はこのタイプのエラーを探してきましたが、通常の問題は、人々が undefined を含めないことですミドルウェア、私も res.send(req.body.self); を使用してみましたそして TypeError: Cannot read property 'self' of undefined 、どちらも機能しませんでした。

私が app.use(express.bodyParser()); をするならオブジェクト全体を表示できますが、 app.use(express.urlencoded()); を表示できませんまたは、クライアントからPOSTリクエストを実行するときに渡すコンテンツ(JSONとして渡す)。

*私は app.use(express.json()); を使用できることを知っていますまたは console.log(req) Node内でAPIを構築するために、自分ですべてを行い、経験から学ぶことができるようにしたいと考えています。

ありがとう

編集:

私は body を入れなければなりませんでした restify の前のミドルウェアそれを修正するミドルウェア!

sails.js
あなたの答え
  • 解決した方法 # 1

    bodyParser を移動する   router の上のミドルウェア  ミドルウェア!

    <前>ウィズウィズ

  • 解決した方法 # 2

    ウィズウィズ   var app = express(); app.set('port', process.env.PORT || 3999); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(app.router); の1つである必要があります

  • 解決した方法 # 3

    BodyParserはExpressにバンドルされなくなりました

    <前>ウィズウィズ

  • 解決した方法 # 4

    私にとって@kevinblancoの「app.routerミドルウェアの前にbodyparserミドルウェアを配置する必要があり、それを修正しました!」私のためにやった。底に埋まっているので別の答えに入れます。

    コードは次のようにする必要があります。

    <前>ウィズウィズ

  • 解決した方法 # 5

    Golangでは、httpクライアントリクエストを実行する前に、Content-Typeをapplication/jsonとして設定できます。

    <前>ウィズウィズ Content-Type = "application/json"

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ PHP mysqliで列名の最後の行の詳細を選択する方法は?