2017-03-01 61 views
-2

我想用express來創建使用node.js的服務器端應用程序。目前我能夠獲得位置和溫度的json文檔,但在使用pykite獲取它的在線狀態之後,應用程序只能將服務器位置提供給正在訪問的位置。這裏是目前的形式代碼:需要訪問客戶端IP而不是天氣API的服務器IP

var express = require('express'); 
var app = express(); 
var request = require('request'); 



    app.get('/api/weather/current_temperature', function (req, res) { 
     request('http://api.wunderground.com/api/ebb3e0cf5059cce8/conditions/q/autoip.json', function(error, response, body){ 
      if (!error && response.statusCode==200){ 
       res.setHeader('Content-Type', 'aplication/json');  
       var result = JSON.parse(body); 
       res.json({ "location": result.current_observation.observation_location.city,"temperature": result.current_observation.temp_c }); 
      }else{ 
       console.log(error, response.statusCode, body); 
      } 
      res.end("") 
     }); 
    }); 

    var server = app.listen(3000, function() { 
    var host = server.address().address; 
    var port = server.address().port; 
     console.log('The app is up.'); 
    }); 

我承認我是新來的,但我想學習。如果可能的話,我希望在此代碼中實現一些幫助,以便訪問用戶位置並確定他/她所在位置的天氣。 預先感謝您。

P.S .:我還想要一些鏈接進入一些文檔,不想跳過任何內容。

+0

一個簡單的Google搜索會給你結果。 http://stackoverflow.com/questions/27234861/correct-way-of-getting-clients-ip-addresses-from-http-request-golang –

回答

0

您鏈接到http://api.wunderground.com/api/YOUR_KEY/conditions/q/autoip.json的URL(因爲您沒有提供密鑰而不起作用)在名稱中有autoip

這意味着它將從任何IP地址返回結果請求來自

所以,你有兩個選擇:

  • 不要從該的NodeJS要求。從瀏覽器發出請求。 (考慮到使用API​​密鑰,這可能不可取,並可能會遇到相同來源策略問題)。
  • 查找可以指定要使用的IP地址或位置的其他API(可能來自同一個站點)。
+0

我沒有提供示例代碼中的密鑰,在我的代碼中我擁有它。 – Mercurius

+0

@MercuriusAltar - 它使我們很難測試代碼。 – Quentin

相關問題