3

私は単純なことを試みています。ノードエクスプレスへのajax呼び出しを行い、それに基づいて何かをします。req.body にアクセスできません。つまり、node.js 側からデバッグすると空になります。

ノード側。私は使っている:

app.use(express.bodyParser());

そして、これは明白な私のテスト方法です:

app.get('/courses', function(request, response) {
  console.log("I have been hit"); //I Am getting here               
});

アンギュラーサイド:

eventsApp.factory('MainConnector', function($http, $q, $resource ) {
  return {
    mainConnection: function( ) {

      var requestBody = {
        id: 3,
        name: 'testname',
        lastname: 'testlastname'
      }

      $http.get("http://localhost:3000/courses", requestBody)
        .success(function(data, status, headers, config) {
          console.log("this is coming from wherever:" + data);
          $scope.data = data;
        }).error(function(data, status, headers, config) {
          $scope.status = status;
        });
    }      
  };
});

アクセスしようとしています(ノード側から)

req.body.name

しかし、何も送信していないかのように、body は常に空です。

4

2 に答える 2

4

ExpressJS テスト ハンドラーは実際にはデータに応答していないため、空のボディが返されます。ドキュメントについては、expressjs サイトを参照してください。

基本的にあなたはこのようなものが欲しい

app.get('/courses', function(request, response) {
  console.log("I have been hit"); //I Am getting here
  response.send('hello world');            
});

次に、get リクエストでデータを送信しようとしています。angularjs のドキュメントを見ると$http.get、URL という 1 つのパラメータしかとらないことがわかります。

これは、必要な AngularJS ファクトリが次のようになることを意味します。

eventsApp.factory('MainConnector', function($http, $q, $resource ) {
  return {
    mainConnection: function( ) 
      $http.get("http://localhost:3000/courses")
        .success(function(data) {
          console.log("this is coming from wherever:" + data);
        });
    }      
  };
});

しかし、サーバーに何かを送信したいとしましょう。必要なのは POST リクエストです。これは、GET ではなく POST に応答するように Express ハンドラーを更新することを意味します。

app.get('/courses', function(request, response) {
  response.send(request.body);            
});

これは単純な「エコー」ハンドラです。クライアントが送信したものは何でもクライアントに送り返すだけです。「こんにちは」と送ると「こんにちは」と返ってきます。

および対応する AngularJS サービス ファクトリ

eventsApp.factory('MainConnector', function($http, $q, $resource ) {
  return {
    mainConnection: function( )
      var data = {name: "hello"};
      $http.post("http://localhost:3000/courses", data)
        .success(function(data) {
          console.log("this is coming from wherever:" + data);
        });
    }      
  };
});
于 2013-10-30T15:58:47.960 に答える