app.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. var express = require('express');
  2. var path = require('path');
  3. var cookieParser = require('cookie-parser');
  4. var logger = require('morgan');
  5. const cors = require("cors");
  6. const Joic = require("joi");
  7. // const bodyParser = require('body-parser')
  8. //
  9. var app = express();
  10. //解决跨域问题
  11. app.use(cors());
  12. app.use(logger('dev'));
  13. app.use(express.json());
  14. // app.use(bodyParser.json());// 用于解析 application/json 类型的请求体÷
  15. //配置解析表单数据的中间件,只能解析application/x-www-form-urlencoded格式的表单数据
  16. app.use(express.urlencoded({ extended: true }));
  17. app.use(cookieParser());
  18. app.use(express.static(path.join(__dirname, 'public')));
  19. //在路由之前封装返回报错函数
  20. app.use((req, res, next) => {
  21. res.rescc = function (message, status = 500, data) {
  22. res.send({
  23. status,
  24. message: message instanceof Error ? message.message : message,
  25. data
  26. })
  27. }
  28. next();
  29. })
  30. //在路由之前解析token中间件
  31. // const expressJWT = require("express-jwt");
  32. // const config = require('./config.js');
  33. // app.use(expressJWT({
  34. // secret: config.jwtSecretKey
  35. // }).unless({
  36. // path: [/^\/api/]
  37. // }))
  38. //导入使用router模块
  39. //用户注册登录
  40. // const userRounter = require('./routes/user/user.js');
  41. // app.use('/api/user', userRounter);
  42. //用户信息
  43. // const userinfoRounter = require('./routes/user/userInfo.js');
  44. // app.use('/my', userinfoRounter);
  45. //天气
  46. const weatherInchinaRounter = require('./routes/weather/inchina.js');
  47. app.use('/weather/inchina', weatherInchinaRounter);
  48. //获取所有气象层级
  49. const weatherLevel = require('./routes/weather/level.js');
  50. app.use('/weather', weatherLevel);
  51. //获取所有气象变量
  52. const weatherVariables = require('./routes/weather/variables.js');
  53. app.use('/weather', weatherVariables);
  54. // 别问,问就是测试用的
  55. const test = require('./routes/grib2/test.js');
  56. app.use('/api', test);
  57. // 获取全球指定层级与变量
  58. const getAreaWeatherData = require('./routes/grib2/getAreaWeatherData.js');
  59. app.use('/weather', getAreaWeatherData);
  60. const getWeatherWindData = require('./routes/grib2/getWeatherWindData.js');
  61. app.use('/weather', getWeatherWindData);
  62. const tempapiRounter = require('./routes/weather/temperature.js');
  63. app.use('/weather/tempapi', tempapiRounter);
  64. const mapTiles = require('./routes/tiles/map.js');
  65. app.use('/tiles', mapTiles);
  66. const cloudTiles = require('./routes/tiles/cloud.js');
  67. app.use('/tiles', cloudTiles);
  68. //疫苗接种
  69. // const vaccinesRounter = require('./routes/vaccines/vaccine.js');
  70. // app.use('/my/vaccines', vaccinesRounter);
  71. //接入deepseek
  72. // const openaiRounter = require('./routes/openai/openai.js');
  73. // app.use('/api/deepseek', openaiRounter);
  74. // const openaiListRounter = require('./routes/openai/openaiList.js');
  75. // app.use('/my/aitalk', openaiListRounter);
  76. //定义错误级别的中间件
  77. app.use((err, req, res, next) => {
  78. //验证失败导致的错误
  79. if (err instanceof Joic.ValidationError) return res.rescc(err);
  80. //token验证失败的错误
  81. if (err.name === 'UnauthorizedError') return res.rescc("身份验证失败!");
  82. res.rescc(err);
  83. })
  84. module.exports = app;