2017-03-01 60 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

相关问题