Как мне написать запрос Node.js к стороннему API? - PullRequest
12 голосов
/ 25 марта 2011

У кого-нибудь есть пример ответа API от http.request(), сделанного третьему лицу обратно на мой clientSever и записанного в браузер клиентов?

Я продолжаю застрять в том, что, я уверен, простая логика. Я использую экспресс из чтения документов, которые, кажется, не предоставляют абстракцию для этого.

Спасибо

Ответы [ 3 ]

13 голосов
/ 16 апреля 2013

Обратите внимание, что ответ здесь немного устарел - вы получите устаревшее предупреждение.Эквивалент 2013 года может быть:

app.get('/log/goal', function(req, res){
  var options = {
    host : 'www.example.com',
    path : '/api/action/param1/value1/param2/value2',
    port : 80,
    method : 'GET'
  }

  var request = http.request(options, function(response){
    var body = ""
    response.on('data', function(data) {
      body += data;
    });
    response.on('end', function() {
      res.send(JSON.parse(body));
    });
  });
  request.on('error', function(e) {
    console.log('Problem with request: ' + e.message);
  });
  request.end();
});

Я бы также порекомендовал модуль request , если вы собираетесь написать много таких.Это сэкономит вам много нажатий клавиш в долгосрочной перспективе!

8 голосов
/ 25 марта 2011

Вот краткий пример доступа к внешнему API в функции экспресс-получения:

app.get('/log/goal', function(req, res){
    //Setup your client
    var client = http.createClient(80, 'http://[put the base url to the api here]');
    //Setup the request by passing the parameters in the URL (REST API)
    var request = client.request('GET', '/api/action/param1/value1/param2/value2', {"host":"[put base url here again]"});


    request.addListener("response", function(response) { //Add listener to watch for the response
        var body = "";
        response.addListener("data", function(data) { //Add listener for the actual data
            body += data; //Append all data coming from api to the body variable
        });

        response.addListener("end", function() { //When the response ends, do what you will with the data
            var response = JSON.parse(body); //In this example, I am parsing a JSON response
        });
    });
    request.end();
    res.send(response); //Print the response to the screen
});

Надеюсь, это поможет!

2 голосов
/ 28 марта 2011

Этот пример выглядит очень похоже на то, что вы пытаетесь достичь (чистый Node.js, без экспресса):

http://blog.tredix.com/2011/03/partly-cloudy-nodejs-and-ifs.html

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...