2017-09-14 3 views
1

エクスプレスウェブフレームワークを使用しており、angularjsから$ httpリクエストを作成しようとしています。私はクライアントからの要求にデータを渡していますが、サーバーは何らかの不明な理由で要求を受け取っていません。助けてください。コンソールでnode.js Expressがリクエストを受信して​​いません

server.js

var express = require('express'); 
var app = express(); 
var http = require('http'); 
var server = http.createServer(app); 
var io = require('socket.io')(server); 

var path = require('path'); 
var fs = require('fs'); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.post('/readTfile',function (req,res) { 
    console.log('i received a request'); 
    console.log(req.body); 
}); 

server.listen(3000); 

と角HTML

<html> 
    <head> 
     <title>File tream 2</title> 
     <script type="text/javascript" src="javascripts/angular.js"></script>     
    </head> 

    <body> 
     <h2>File tream 2 AngularJS</h2> 
     <div ng-app = "mainApp">    
      <div id="readfile" ng-controller = "Ctrl1">     
       <div>{{myfiledata}}</div> </br></br> 
      </div> 
     </div>  
    </body> 
<script> 
var mainApp = angular.module("mainApp",[]) 

mainApp.controller('Ctrl1', function ($scope, $http) { 
     var filename = 'D:\\myapp\\public\\test.txt';  
     var obj = {"filename" : filename}; 
     $scope.myfiledata = 'result'; 
     $http({ 
       url: '/readTfile', 
       method: "POST", 
       data: JSON.stringify(obj), 
       //timeout: canceller.promise, 
       headers: {'Content-Type': 'application/json','charset' : 'utf-8'} 
       }).success(function(result) { 
       console.log(result); 
       $scope.myfiledata = 'result';      
       }).error(function(data, status) { 
       console.log(data); 
       }); 
});    
</script> 
</html> 

私は

未定義

要求を受信しreq.body

のために未定義取得しています

私はこの問題を解決するのを手伝ってください。

答えて

7

着信ストリームからPOST要求の本文を読み取り、JSONからJavascriptオブジェクトに解析するためにミドルウェアが必要です。それは自動的にreq.bodyに終わるだけではありません。単純なJSON本体の通常のミドルウェアはbody-parser middlewareです。

const bodyParser = require('body-parser'); 

// other stuff here 

// read and parse application/json 
app.use(bodyParser.json()); 

app.post('/readTfile',function (req,res) { 
    console.log('i received a request'); 
    console.log(req.body); 
}); 

そして、このミドルウェアのために働くと、自動的にあなたはポスト右コンテンツタイプを設定していることを確認する必要がありますが、JSONを送ったことを認識します。

+0

ありがとうございます。私はこのミドルウェアを追加し、それは働いた。私はこれを見逃して自分自身を笑っている。もう一度ありがとう。 – sand

+0

@sand、あなたの問題を解決すれば答えを受け入れてください – lifeisfoo

+0

私は試していますが、4分待つことを求めています。 – sand

関連する問題