2016-06-29 1 views
0

сервер A Node.js работает Express.js обрабатывает HTTP GET к mydomain.com/myurl, отправив POST в http://some_other_domain_url_with_params?reply_url=mydomain.com/myurl. И ответ возвращается как просто JSON.Тестирование и анализ ответа JSON в Node.js/Express.js

Какой код нужно добавить в файл routes.js ниже, для того, чтобы:
1.) создать отдельный блок обработки в том случае, если запрос mydomain.com/myurl является только JSON, и
2.) передать элементы ответа JSON вручную по имени в переменную1, переменную2, переменную3 и т. Д.?

Вот routes.js, который обрабатывает серверные маршруты:

var url = require('url'); 

module.exports = function(app) { 

    app.get('/myurl', function(req, res) { 
     app.post('http://some_other_domain_url_with_params?reply_url=mydomain.com/myurl', function(req, res) {}); 
     console.log('The POST is finished. Waiting for response.'); 
     //need separate handler for JSON response that comes back from the other domain after this 
    }); 

    app.get('*', function(req, res) { 
     res.sendfile('./public/index.html'); // load the single view file (angular will handle the front-end) 
    }); 
}; 

Ответ от POST http://some_other_domain_url_with_params?reply_url=mydomain.com/myurl может выглядеть следующим образом:

HTTP/1.1 200 OK 
Content-Type: application/json;charset=UTF-8 
Cache-Control: no-store 
Pragma: no-cache 

{ 
    "var_one":"value1", 
    "var_two":"value2", 
    "var_three":1100 
} 

ответ

2

Ваш app.post вызова обыкновение делать POST reqqest на другой сервер , он предназначен для настройки маршрута POST на вашем сервере. Если вы хотите, чтобы HTTP-запросы на другой сервер, использовать библиотеку, например, request. Затем вы можете использовать JSON.parse, чтобы включить ответ JSON в собственный JavaScript-объект.

Пример:

var url = require('url'); 
var request = require('request'); 

module.exports = function(app) { 

    app.get('/myurl', function(req, res) { 
     request.post('http://some_other_domain_url_with_params?reply_url=mydomain.com/myurl', function(err, response, body){ 
      if(err){ 
       //handle error here 
      } 
      var data = JSON.parse(body); 
      var variable1 = data.var_one; 
      var variable2 = data.var_two; 
      var variable3 = data.var_three; 
      //Do more processing here 
     }); 
     console.log('The POST is finished. Waiting for response.'); 
    }); 
}; 
+0

Это работает. Однако не забудьте: 'npm install --save request' – CodeMed

Смежные вопросы