/** * URL初始化。 * * 除了初始化URL,还增加对版本的访问控制。 * * author: Sand * since: 12/23/2016 */ "use strict"; let ObjectUtil = require("../util/object.util.js"); // pages let index = require('../controllers/index'); let socket = require('../controllers/socket'); // endpoints let application = require('./v2/application.endpoint'); let users = require('./v2/user.endpoint'); let sessions = require('./v2/session.endpoint'); let topics = require('./v2/topic.endpoint'); let management = require('./v2/management.endpoint'); const PAGES = require('../include/endpoints').PAGES; const APIv2 = require('../include/endpoints').APIv2; class UrlInitializer { constructor() { } static initRestApi(app) { // 旧版本API过滤 app.use(function (req, res, next) { if (req.url.indexOf('/api/v1') >= 0) { res.status(403).send({message: "API v1 is invalid since 2.0.0, please use API v2."}); } else { next(); } }); // POST, PUT请求必须使用JSON作为BODY app.use(function (req, res, next) { if(req.method === 'POST' || req.method === 'PUT'){ if(!ObjectUtil.isJsonObject(req.body)){ throw {httpStatus: 406, message: 'Problems parsing JSON.'} } } next(); }); app.use(APIv2.Application.Base, application); app.use(APIv2.Management.Base, management); app.use(APIv2.Users.Base, users); app.use(APIv2.Sessions.Base, sessions); app.use(APIv2.Sessions.Base, topics); } static initWebPages(app) { app.use(PAGES.Home.Index, index); app.use(PAGES.Socket.Index, socket); } } module.exports = UrlInitializer;