2013-05-09 91 views
4

我正在尋找一種方法來複制jQuery方法getJSON,但服務器端。 我正在使用的服務器是一個使用coffeescript編寫的express框架的node.js服務器。如何從特快服務器的遠程服務器獲取JSON?

我有客戶端的代碼是:

# To get the client IP 
$.getJSON("http://jsonip.com?callback=?", (data) -> 
     # To get more information about that IP 
    $.getJSON("http://freegeoip.net/json/" + data.ip, (fulldata) -> 
    console.log fulldata)) 

的fulldata變量給我關於客戶端IP信息。

我必須避免使用JavaScript客戶端,所以我嘗試做相同的服務器端,我得到的客戶端IP做:

(req, res) -> 
    # To get the client IP 
    req.ip 

但在那之後,我不知道如何讓fulldata在freegeoip.net服務器的json中。

幫助,任何人?

+0

http://nodejs.org/docs/ v0.5.2/api/http.html#http.request – 2013-05-09 11:30:16

+0

https://github.com/mikeal/request – ZimSystem 2013-05-09 11:57:37

回答

1

我用Skelly解決方案。

所以我做:

request = require 'request' 

(...) 

(req, res) -> 
    url = 'http://freegeoip.net/json/' + req.ip 
    request.get(url, (error, response, body) -> 
    if !error 
     console.log body 
) 

主體包含我需要的數據。

我確定David Fregoli的本地node.js解決方案也可以工作,但Request包完美且輕鬆地工作。

感謝他們倆。

+0

如果您只是在獲取請求之後,node.js有一個類似於請求模塊的快捷方式。 http://nodejs.org/docs/v0.5.2/api/http.html#http.get – Pickels 2013-05-09 13:53:42

0

我不熟悉的CoffeeScript,然而,節點的默認庫一個叫HTTP(最常用的設置服務器)可以使HTTP請求

var request = http.request({host: 'jsonip.com', port: 80, path: '?callback=?' , method: 'GET'}, function(res){ 
    res.on('data', function (chunk) { 
     console.log('BODY: ' + chunk); 
    }); 
});