Quellcode durchsuchen

add weather query

Dotos vor 8 Jahren
Ursprung
Commit
1490bee191
3 geänderte Dateien mit 65 neuen und 3 gelöschten Zeilen
  1. 5 3
      app.js
  2. 1 0
      package.json
  3. 59 0
      routes/weather.js

+ 5 - 3
app.js

@@ -19,10 +19,12 @@ var logUtils = require('./utils/logUtils');
 var netease = require('./routes/netease');
 //JsonBird version 1.0
 var v1 = require('./routes/v1');
-//joke
+//笑话接口
 var joke = require('./routes/joke');
-//mobile
+//手机号码归属地接口
 var mobile = require('./routes/mobile');
+//天气
+var weather = require('./routes/weather');
 //test
 var test = require('./routes/test');
 
@@ -104,7 +106,7 @@ app.use('/v1', v1);
 app.use('/netease', netease);
 app.use('/joke', joke);
 app.use('/mobile', mobile);
-
+app.use('/weather', weather);
 
 
 // catch 404 and forward to error handler

+ 1 - 0
package.json

@@ -35,6 +35,7 @@
     "node-sass": "^3.10.0",
     "node-sass-middleware": "^0.9.8",
     "pug": "^2.0.0-beta6",
+    "querystring": "^0.2.0",
     "request": "^2.74.0",
     "serve-favicon": "~2.3.0"
   }

+ 59 - 0
routes/weather.js

@@ -0,0 +1,59 @@
+var express = require('express');
+var request = require('request');
+var qs = require('querystring');
+var router = express.Router();
+// 创建 application/x-www-form-urlencoded 编码解析
+var bodyParser = require('body-parser');
+var urlencodedParser = bodyParser.urlencoded({ extended: false });
+var key = "e0540a109f5a73e9df2981cdeb9d106f";
+var url = 'http://op.juhe.cn/onebox/weather/query?key=' + key;
+var type = '';
+var callback = '';
+var city = '';
+router.get('/', function(req, res, next) {
+    city = req.query.city;
+    type = req.query.type === 'xml' ? 'xml' : '';
+    callback = req.query.callback;
+    getMobile(req, res, next);
+});
+router.post('/', urlencodedParser, function(req, res, next) {
+    city = req.body.city;
+    type = req.body.type === 'xml' ? 'xml' : '';
+    getMobile(req, res, next);
+});
+
+function getMobile(req, res, next) {
+    city = !!city ? qs.escape(city) : '';
+    console.log(city);
+    url += type === 'xml' ? '&dtype=xml' : '';
+    url += '&cityname=' + city;
+    request(url, function(err, response, body) {
+        if (!type) {
+            body = JSON.parse(body);
+            if (!err && response.statusCode === 200 && body.error_code === 0) {
+                var output = {
+                    data: body.result.data || body.result,
+                    status: {
+                        code: 200,
+                        message: ''
+                    }
+                };
+                if (callback) {
+                    return res.jsonp(output);
+                } else {
+                    return res.json(output);
+                }
+            } else {
+                var error = {
+                    code: -1,
+                    message: body.reason
+                };
+                res.json(error);
+            }
+        } else {
+            res.send(body);
+        }
+    });
+}
+
+module.exports = router;