url.initializer.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. let search = require('./v2/search.endpoint');
  21. const PAGES = require('../include/endpoints').PAGES;
  22. const APIv2 = require('../include/endpoints').APIv2;
  23. class UrlInitializer {
  24. constructor() {
  25. }
  26. static initRestApi(app) {
  27. // 旧版本API过滤
  28. app.use(function (req, res, next) {
  29. if (req.url.indexOf('/api/v1') >= 0) {
  30. res.status(403).send({message: "API v1 is invalid since 2.0.0, please use API v2."});
  31. } else {
  32. next();
  33. }
  34. });
  35. // POST, PUT请求必须使用JSON作为BODY
  36. app.use(function (req, res, next) {
  37. if(req.method === 'POST' || req.method === 'PUT'){
  38. if(!ObjectUtil.isJsonObject(req.body)){
  39. throw {httpStatus: 406, message: 'Problems parsing JSON.'}
  40. }
  41. }
  42. next();
  43. });
  44. app.use(APIv2.Application.Base, application);
  45. app.use(APIv2.Management.Base, management);
  46. app.use(APIv2.Users.Base, users);
  47. app.use(APIv2.Sessions.Base, sessions);
  48. app.use(APIv2.Sessions.Base, topics);
  49. app.use(APIv2.Search.Base, search);
  50. }
  51. static initWebPages(app) {
  52. app.use(PAGES.Home.Index, index);
  53. app.use(PAGES.Socket.Index, socket);
  54. }
  55. }
  56. module.exports = UrlInitializer;