app.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. var express = require('express');
  2. var request = require('superagent');
  3. var path = require('path');
  4. var favicon = require('serve-favicon');
  5. var logger = require('morgan');
  6. var cookieParser = require('cookie-parser');
  7. var bodyParser = require('body-parser');
  8. //Welcome Page
  9. var welcome = require('./routes/welcome');
  10. //日志输出
  11. var logUtils = require('./utils/logUtils');
  12. //查询ip
  13. var ip = require('./routes/ip');
  14. //网易云音乐
  15. var netease = require('./routes/netease');
  16. //JsonBird version 1.0
  17. var v1 = require('./routes/v1');
  18. //笑话接口
  19. var joke = require('./routes/joke');
  20. //手机号码归属地接口
  21. var mobile = require('./routes/mobile');
  22. //天气
  23. var weather = require('./routes/weather');
  24. //test
  25. var test = require('./routes/test');
  26. var app = express();
  27. app.set('views', path.join(__dirname, 'views'));
  28. // view engine setup
  29. app.set('view engine', 'pug');
  30. app.enable('trust proxy');
  31. app.disable('x-powered-by');
  32. // uncomment after placing your favicon in /public
  33. //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  34. // app.use(logger('combined', {
  35. // skip: function(req, res) { return res.statusCode < 400 }
  36. // }));
  37. //app.use(bodyParser.raw({ type: '*/*' }));
  38. /***
  39. * 处理OPTIONS请求
  40. */
  41. app.use(function(req, res, next) {
  42. //
  43. if (req.method === 'OPTIONS') {
  44. res.send(200);
  45. } else next();
  46. });
  47. app.use(bodyParser.json());
  48. app.use(bodyParser.urlencoded({ extended: true }));
  49. app.use(cookieParser());
  50. //静态文件访问路径
  51. app.use('/static', express.static(path.join(__dirname, 'static')));
  52. app.use(favicon(__dirname + '/static/images/favicon.ico'));
  53. app.use('/', welcome);
  54. app.use('/test', test);
  55. app.use('/ip', ip);
  56. app.use('/v1', v1);
  57. app.use('/netease', netease);
  58. app.use('/joke', joke);
  59. app.use('/mobile', mobile);
  60. app.use('/weather', weather);
  61. /**
  62. * Robots.txt
  63. */
  64. app.use('/robots.txt', function(req, res, next) {
  65. res.header('content-type', 'text/plain');
  66. res.send('User-Agent: * \nAllow: /');
  67. });
  68. // catch 404 and forward to error handler
  69. app.use(function(req, res, next) {
  70. var err = new Error('Not Found');
  71. err.status = 404;
  72. next(err);
  73. });
  74. // error handlers
  75. // development error handler
  76. // will print stacktrace
  77. if (app.get('env') === 'development') {
  78. app.use(function(err, req, res, next) {
  79. res.status(err.status || 500);
  80. res.send({
  81. data: {},
  82. status: {
  83. code: err.status,
  84. message: err.message
  85. }
  86. });
  87. });
  88. }
  89. // production error handler
  90. // no stacktraces leaked to user
  91. app.use(function(err, req, res, next) {
  92. res.status(err.status || 500);
  93. res.send({
  94. data: {},
  95. status: {
  96. code: err.status,
  97. message: err.message
  98. }
  99. });
  100. });
  101. module.exports = app;