原生node创建路由的分层

原生node创建路由的分层

为了方便维护 可以将路由内容跟创建路由以及服务端基本结构分来

可以分为四层

服务端的基本基本结构 这个结构就能通过上面暴露的内容 拼成完整的,这里完全是createServer的逻辑 跟业务代码无关 可以说是比较固定的

这里完全是createServer的逻辑 跟业务代码无关 可以说是比较固定的

const http = require('http');
const PORT = 8000;
const serverHandle = require('../app');

const server = http.createServer(serverHandle);
server.listen(PORT);

再把处理 设置一些基本信息、基本设置的配置封装一个文件 然后通过 module.exports暴露,这也和业务代码关联较小

属于系统 服务器基本设置

const apiContent = require('./apiContent');
const serverHandle = (req,res) => {
    
    
    res.setHeader('Content-type','application/json');//业界规范  就是用json格式

    const Data = apiContent(req,res);
    if(Data){
    
    
        res.end(JSON.stringify(Data));
        return;
    }
    //访问的是没定义的接口 返回
    res.writeHead(404,{
    
    'Content-type':'text/plain'});
    res.write('404');
    res.end();
};

module.exports = serverHandle;

把对应接口的被访问时的处理的内容封装一个文件 然后通过 module.exports暴露 就是只管路由接口,返回正确格式,他不管数据怎么计算怎么处理等不归他考虑

const apiContent = (req,res) => {
    
    
    const method = req.method;
    const url = req.url;
    const path = url.split('?')[0];
    if(method === "GET" && path === "/"){
    
    
        return {
    
    
            msg:'/ GET'
        }
    }
    if(method === "POST" && path === "/login"){
    
    
        return {
    
    
            msg:'/login  POST'
        }
    }
}

module.exports = apiContent;

在这里对数据进行处理,计算等的内容 只关心数据 最后返回数据并暴露

const getList = (author,keyword) => {
    
    
    return[   //一般这里是返回的数据库中提取查找的数据  这里为了方便直接写出来的
        {
    
    
            id:1,
            title:'标题A',
            content:'内容A',
            createTime:1546610491112,
            author:'zhangsan'
        },
        {
    
    
            id: 2,
            title:'标题B',
            content:'内容B',
            createTime: 1546610524373,
            author: 'zhangsan'
        }
    ]

}


module.exports = {
    
    
    getList,
};

在服务器项目中 经常写两个文件夹 router和controller 他是将路由操作和数据操作分开 这样容易维护 可容易调试错误等

router:写路由相关的 就是只管访问分配什么数据,保证数据的格式是正确的,以及接受发过来的信息、数据等

controller :只管处理数据 根据router中的内容发过来的参数处理 把数据返回给router中的内容

所以是router调用controller的关系

猜你喜欢

转载自blog.csdn.net/weixin_44492275/article/details/109253618
今日推荐