url.initializer.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * URL初始化。
  3. *
  4. * 除了初始化URL,还增加对版本的访问控制。
  5. *
  6. * author: Sand
  7. * since: 12/23/2016
  8. */
  9. "use strict";
  10. let ObjectUtil = require("../util/object.util.js");
  11. // pages
  12. let index = require('../controllers/index');
  13. let socket = require('../controllers/socket');
  14. // endpoints
  15. let application = require('./v2/application.endpoint');
  16. let users = require('./v2/user.endpoint');
  17. let sessions = require('./v2/session.endpoint');
  18. let topics = require('./v2/topic.endpoint');
  19. let management = require('./v2/management.endpoint');
  20. const PAGES = require('../include/endpoints').PAGES;
  21. const APIv2 = require('../include/endpoints').APIv2;
  22. class UrlInitializer {
  23. constructor() {
  24. }
  25. static initRestApi(app) {
  26. // 旧版本API过滤
  27. app.use(function (req, res, next) {
  28. if (req.url.indexOf('/api/v1') >= 0) {
  29. res.status(403).send({message: "API v1 is invalid since 2.0.0, please use API v2."});
  30. } else {
  31. next();
  32. }
  33. });
  34. // POST, PUT请求必须使用JSON作为BODY
  35. app.use(function (req, res, next) {
  36. if(req.method === 'POST' || req.method === 'PUT'){
  37. if(!ObjectUtil.isJsonObject(req.body)){
  38. throw {httpStatus: 406, message: 'Problems parsing JSON.'}
  39. }
  40. }
  41. next();
  42. });
  43. app.use(APIv2.Application.Base, application);
  44. app.use(APIv2.Management.Base, management);
  45. app.use(APIv2.Users.Base, users);
  46. app.use(APIv2.Sessions.Base, sessions);
  47. app.use(APIv2.Sessions.Base, topics);
  48. }
  49. static initWebPages(app) {
  50. app.use(PAGES.Home.Index, index);
  51. app.use(PAGES.Socket.Index, socket);
  52. }
  53. }
  54. module.exports = UrlInitializer;