joke.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. let express = require('express');
  2. let request = require('request');
  3. let router = express.Router();
  4. const key = '64a40e3c55e88cc8cd66a78d030bddce';
  5. /**
  6. * Get 请求
  7. */
  8. router.get('/', function(req, res, next) {
  9. getJOKE(req, res, next);
  10. });
  11. /**
  12. * 随机获取
  13. */
  14. router.get('/rand', function(req, res, next) {
  15. getJOKE(req, res, next, 'rand');
  16. });
  17. /**
  18. * Post 请求
  19. */
  20. router.post('/', function(req, res, next) {
  21. getJOKE(req, res, next);
  22. });
  23. /**
  24. * 随机获取
  25. */
  26. router.post('/rand', function(req, res, next) {
  27. getJOKE(req, res, next, 'rand');
  28. });
  29. /**
  30. * 统一的请求
  31. */
  32. function getJOKE(req, res, next, op) {
  33. let page = req.query.page || req.body.page || 1;
  34. let pagesize = req.query.pagesize || req.body.pagesize || 1;
  35. let sort = req.query.sort || req.body.sort;
  36. let time = req.query.time || req.body.time;
  37. let type = req.query.type || req.body.type || 'pic';
  38. let callback = req.query.callback || req.body.callback;
  39. let url = '';
  40. if (!!op && op === 'rand') {
  41. if (type !== 'pic') {
  42. type = null;
  43. }
  44. url = "http://v.juhe.cn/joke/randJoke.php?key=" + key;
  45. if (!!type) {
  46. url += "&type=" + type;
  47. }
  48. } else {
  49. url = "http://japi.juhe.cn/joke/";
  50. if (!!type && type === 'text') {
  51. url += "content/text.from?key=";
  52. } else {
  53. url += "img/text.from?key=";
  54. }
  55. url += key + "&page=" + page + "&pagesize=" + pagesize;
  56. if (!!sort && !!time) {
  57. url += "&sort=" + sort + "&time=" + time;
  58. url = url.replace(/text/, 'list');
  59. }
  60. }
  61. console.log(url)
  62. request(url, function(err, response, body) {
  63. body = JSON.parse(body);
  64. let output = {
  65. data: (body.result && body.result.data ? body.result.data : body.result) || {},
  66. status: {
  67. code: 200,
  68. message: ''
  69. }
  70. };
  71. if (!err && response.statusCode === 200 && body.error_code === 0) {
  72. //
  73. } else {
  74. output.status = {
  75. code: -1,
  76. message: err || body.reason || 'Something bad happend.'
  77. };
  78. }
  79. if (callback) {
  80. return res.jsonp(output);
  81. } else {
  82. return res.json(output);
  83. }
  84. });
  85. }
  86. module.exports = router;