Dotos 8 лет назад
Родитель
Сommit
52b132fabf
3 измененных файлов с 72 добавлено и 73 удалено
  1. 58 59
      routes/joke.js
  2. 3 3
      routes/test.js
  3. 11 11
      routes/v1.js

+ 58 - 59
routes/joke.js

@@ -4,85 +4,84 @@ var router = express.Router();
 // 创建 application/x-www-form-urlencoded 编码解析
 var bodyParser = require('body-parser');
 var urlencodedParser = bodyParser.urlencoded({ extended: false });
-var key = "64a40e3c55e88cc8cd66a78d030bddce";
+var params = {
+    key: '64a40e3c55e88cc8cd66a78d030bddce',
+    method: 'get',
+    page: 1,
+    pagesize: 1,
+    sort: '',
+    time: '',
+    type: ''
+};
+
 /**
  * Get 请求
  */
 router.get('/', function(req, res, next) {
-    var page = req.query.page || 1;
-    var pagesize = req.query.pagesize || 1;
-    var sort = req.query.sort || '';
-    var time = req.query.time || '';
-    var type = req.query.type;
-    var url = "http://japi.juhe.cn/joke/";
-    if (!!type && type === 'text') {
-        url += "content/text.from?key=";
-    } else {
-        url += "img/text.from?key=";
-    }
-    url += key + "&page=" + page + "&pagesize=" + pagesize;
-    if (!!sort && !!time) {
-        url += "&sort=" + sort + "&time=" + time;
-        url = url.replace(/text/, 'list');
-    }
-    if (!!sort && !!time) {
-        url += "&sort=" + sort + "&time=" + time;
-    }
-
-    getJOKE(req, res, next, url);
+    params.method = 'get';
+    params.page = req.query.page || 1;
+    params.pagesize = req.query.pagesize || 1;
+    params.sort = req.query.sort || '';
+    params.time = req.query.time || '';
+    params.type = req.query.type;
+    getJOKE(req, res, next);
 });
 /**
  * 随机获取
  */
 router.get('/rand', function(req, res, next) {
-    var type = req.query.type || 'pic';
-    if (type !== 'pic')
-        type = null;
-    var url = "http://v.juhe.cn/joke/randJoke.php?key=" + key;
-    if (!!type) {
-        url += "&type=" + type;
-    }
-    getJOKE(req, res, next, url);
+    params.method = 'get';
+    params.type = req.query.type || 'pic';
+    getJOKE(req, res, next, 'rand');
 });
 
 /**
  * Post 请求
  */
 router.post('/', urlencodedParser, function(req, res, next) {
-    var page = req.body.page || 1;
-    var pagesize = req.body.pagesize || 1;
-    var sort = req.body.sort || '';
-    var time = req.body.time || '';
-    var type = req.body.type;
-    var url = "http://japi.juhe.cn/joke/";
-    if (!!type && type === 'text') {
-        url += "content/text.from?key=";
-    } else {
-        url += "img/text.from?key=";
-    }
-    url += key + "&page=" + page + "&pagesize=" + pagesize;
-    if (!!sort && !!time) {
-        url += "&sort=" + sort + "&time=" + time;
-        url = url.replace(/text/, 'list');
-    }
-    getJOKE(req, res, next, url);
+    params.method = 'post';
+    params.page = req.body.page || 1;
+    params.pagesize = req.body.pagesize || 1;
+    params.sort = req.body.sort || '';
+    params.time = req.body.time || '';
+    params.type = req.body.type;
+    getJOKE(req, res, next);
 });
 /**
  * 随机获取 
  */
 router.post('/rand', urlencodedParser, function(req, res, next) {
-    var type = req.body.type || 'pic';
-    if (type !== 'pic') {
-        type = null;
-    }
-    var url = "http://v.juhe.cn/joke/randJoke.php?key=" + key;
-    if (!!type) {
-        url += "&type=" + type;
-    }
-    getJOKE(req, res, next, url);
+    params.method = 'post';
+    params.type = req.body.type || 'pic';
+    getJOKE(req, res, next, 'rand');
 });
 
-function getJOKE(req, res, next, url) {
+/**
+ * 统一的请求
+ */
+function getJOKE(req, res, next, op) {
+    var url = '';
+    if (!!op && op === 'rand') {
+        if (params.type !== 'pic') {
+            params.type = null;
+        }
+        url = "http://v.juhe.cn/joke/randJoke.php?key=" + params.key;
+        if (!!params.type) {
+            url += "&type=" + params.type;
+        }
+    } else {
+        url = "http://japi.juhe.cn/joke/";
+        if (!!params.type && params.type === 'text') {
+            url += "content/text.from?key=";
+        } else {
+            url += "img/text.from?key=";
+        }
+        url += params.key + "&page=" + params.page + "&pagesize=" + params.pagesize;
+        if (!!params.sort && !!params.time) {
+            url += "&sort=" + params.sort + "&time=" + params.time;
+            url = url.replace(/text/, 'list');
+        }
+    }
     request(url, function(err, response, body) {
         body = JSON.parse(body);
         if (!err && response.statusCode === 200 && body.error_code === 0) {
@@ -96,11 +95,11 @@ function getJOKE(req, res, next, url) {
             if (req.query.callback) {
                 return res.jsonp(output);
             } else {
-                return res.send(output);
+                return res.json(output);
             }
         } else {
             var error = new Error(body.reason);
-            error.status = 404;
+            error.status = -1;
             next(error);
         }
     });

+ 3 - 3
routes/test.js

@@ -20,11 +20,11 @@ router.get('/', function(req, res, next) {
     //     pagebase: 'https://m.csair.com'
     // };
     var mydata = {
-        name: 'zhangsan',
-        pass: 'lisi'
+        page: 1,
+        pagesize: 3
     };
 
-    request.post('http://localhost:3000/joke/', { form: mydata }, function(err, resp, body) {
+    request.post('https://bird.ioliu.cn/joke/', { form: mydata }, function(err, resp, body) {
         res.send(body);
     });
 });

+ 11 - 11
routes/v1.js

@@ -2,17 +2,18 @@ var express = require('express');
 var request = require('request');
 var router = express.Router();
 
-router.all('*', function(req, res, next) {
-    res.header("Content-Type", "application/json;charset=utf-8");
-    next();
-});
+// router.all('*', function(req, res, next) {
+//     res.header("Content-Type", "application/json;charset=utf-8");
+//     next();
+// });
 
-router.get('/', function(req, res, next) {
+router.get('/*', function(req, res, next) {
     var host = req.hostname;
     var protocol = req.protocol;
     var originalUrl = req.originalUrl;
-    var ip = req.ip.replace(/::ffff:/, '');
-    if (originalUrl === /v1/) {
+    var ip = req.ip.replace(/\:\:ffff\:/, '');
+    var ip = req.ip.replace(/\:\:1/, '127.0.0.1');
+    if (!req.query.url) {
         ip2address(ip, function(data) {
             var output = {
                 data: {
@@ -27,9 +28,8 @@ router.get('/', function(req, res, next) {
             if (data) {
                 output['data']['Location'] = data.area + data.location;
             }
-            return res.send(output);
+            return res.json(output);
         });
-
     } else {
         var url = originalUrl.replace('/v1/?url=', '');
         url = url.indexOf('?') === -1 ? url.replace('&', '?') : url;
@@ -45,7 +45,7 @@ router.get('/', function(req, res, next) {
             if (req.query.callback) {
                 return res.jsonp(output);
             } else {
-                return res.send(output);
+                return res.json(output);
             }
         });
     }
@@ -58,7 +58,7 @@ function getJSON(url, next, callback) {
             callback && callback(body);
         } else {
             var error = new Error(err);
-            error.status = 404;
+            error.status = -1;
             next(error);
         }
     });