weather.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. var express = require('express');
  2. var request = require('request');
  3. var qs = require('querystring');
  4. var router = express.Router();
  5. // 创建 application/x-www-form-urlencoded 编码解析
  6. var bodyParser = require('body-parser');
  7. var urlencodedParser = bodyParser.urlencoded({ extended: false });
  8. var key = "e0540a109f5a73e9df2981cdeb9d106f";
  9. var url = 'http://op.juhe.cn/onebox/weather/query?key=' + key;
  10. var type = '';
  11. var callback = '';
  12. var city = '';
  13. router.get('/', function(req, res, next) {
  14. city = req.query.city;
  15. type = req.query.type === 'xml' ? 'xml' : '';
  16. callback = req.query.callback;
  17. getMobile(req, res, next);
  18. });
  19. router.post('/', urlencodedParser, function(req, res, next) {
  20. city = req.body.city;
  21. type = req.body.type === 'xml' ? 'xml' : '';
  22. getMobile(req, res, next);
  23. });
  24. function getMobile(req, res, next) {
  25. city = !!city ? qs.escape(city) : '';
  26. console.log(city);
  27. url += type === 'xml' ? '&dtype=xml' : '';
  28. url += '&cityname=' + city;
  29. request(url, function(err, response, body) {
  30. if (!type) {
  31. body = JSON.parse(body);
  32. if (!err && response.statusCode === 200 && body.error_code === 0) {
  33. var output = {
  34. data: body.result.data || body.result,
  35. status: {
  36. code: 200,
  37. message: ''
  38. }
  39. };
  40. if (callback) {
  41. return res.jsonp(output);
  42. } else {
  43. return res.json(output);
  44. }
  45. } else {
  46. var error = {
  47. code: -1,
  48. message: body.reason
  49. };
  50. res.json(error);
  51. }
  52. } else {
  53. res.send(body);
  54. }
  55. });
  56. }
  57. module.exports = router;