2011-03-25 42 views
11

有沒有人有一個API響應的例子從一個http.request()傳遞給第三方返回到我的clientSever並寫出到客戶端瀏覽器?如何向第三方API寫入Node.js請求?

我一直陷在我肯定是簡單的邏輯。我在閱讀文檔時使用了快遞,但似乎沒有提供這種抽象。

感謝

+0

search.npmjs.org有很多模塊可以幫助您發出http請求... – Alfred 2011-03-25 22:24:04

回答

13

請注意,這裏的答案是一點點出來的日期 - 您會收到不推薦使用的警告。 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模塊,如果你將要寫了很多的這些。從長遠來看,它會爲您節省很多擊鍵!

7

這裏是明確get函數訪問外部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 
}); 

希望幫助!

+0

OAuth會如何改變?我不知道把證書放在哪裏。 – user137717 2014-11-15 18:08:36

+0

這會變得更復雜... – Clint 2014-11-17 20:06:25

+0

你有鏈接到某個地方的解釋嗎?我一直無法找到徹底解釋過程的東西。 – user137717 2014-11-17 21:12:54