Node.js用Koa框架去搭建http服务

3 篇文章 0 订阅
1 篇文章 0 订阅

用Koa框架去构建http服务器,在构建http服务需要用到http模块,由于http模块是Node.js自带的模块所以不需要我们从网上去下载.

该项目会用到的几个模块

在这里插入图片描述
直接通过npm去安装例如: npm install koa

在项目中先建立一个app.js文件,然后引用我们已经安装过的模块
在这里插入图片描述
然后在 app.js里面注册或者说设置
在这里插入图片描述

然后我们在写一个处理url的js,类似于路由,创建一个controller.js和app.js是同级目录

const fs = require('fs');

function addMapping(router, mapping) {
    for (var url in mapping) {
        if (url.startsWith('GET ')) {
            var path = url.substring(4);
            router.get(path, mapping[url]);
            /*console.log(`register URL mapping: GET ${path}`);*/
        } else if (url.startsWith('POST ')) {
            var path = url.substring(5);
            router.post(path, mapping[url]);
           /* console.log(`register URL mapping: POST ${path}`);*/
        } else {
            /*console.log(`invalid URL: ${url}`);*/
        }
    }
}

function addControllers(router, dir) {
    var files = fs.readdirSync(__dirname + '/controllers');
    var js_files = files.filter((f) => {
        return f.endsWith('.js');  //用于检测后缀为.js得文件
    });
   /* console.log(js_files);*/
    for (var f of js_files) {
        /*console.log(`process controller: ${f}...`);*/
        let mapping = require(__dirname + '/controllers/' + f);
        addMapping(router, mapping);
    }
}

module.exports = function (dir) {
    let
        controllers_dir = dir || 'controllers', // 如果不传参数,扫描目录默认为'controllers'
        router = require('koa-router')();
    addControllers(router, controllers_dir);
    return router.routes();
};

引入fs模块对写url的文件的文件夹进行扫描处理,http请求过来后根据url来对controllers文件夹进行扫描,扫描其目录下的url文件,通过请求的url来找到对应的文件中的请求。

接下来发现我们没用controllers文件夹,所以我们创建一个该文件夹。然后在里面创建一个Index.js
在这里插入图片描述
就把这个当作index.js把 手动滑稽,controllers文件夹下面的文件随便起名字,我们也不用引用调用之类的。因为我们已经对这个文件夹进行了全盘扫描了。
接下来就在index.js里面写返回。

var fn_hello = async (ctx, next) => {
	ctx.response.body = '你好!nod.js的koa';
}

返回已经做好了,你现在去请求根本不知道从哪里请求。也没有url地址,是因为我们没有给这个返回绑定相应的请求路径。其实我们就把定义的这个变量绑定对应的请求地址然后exports出去

module.exports = {
    'GET /index': fn_hello
};

ok了,这下直接在该项目下输入node app.js启动项目,然后打开 http://localhost:端口号/index
就可以看见你的请求了

配置信息都要写在package.json里面
在这里插入图片描述
这是我的项目结构,public目录下我都放的一些链接之类的,CommFun.js里面是写了一些公共方法,Redis.js是链接Redis。其实链接Redis很简单。
model下面放的是我处理返回的一些业务逻辑

class RedisOpe{
    constructor(){
        this.Redis = require("redis");
        this.linkRedis = this.Redis.createClient(端口之类的好像,'Redis地址');
    }
    async createRedis(callback){
           await this.linkRedis.on("error",function (error){
                /*console.log("RedisServer is error!\n" + error);*/
                callback('error');
            });
            await this.linkRedis.on('connect',function(){
                /*console.log('redis connect success!');*/
                callback('ok');
            });
        }

}

module.exports={
    RedisOpe
};
//redis操作完成记得关闭redis,关闭方法linkRedis.end(true);

上面就是链接Redis的方法,如果在处理返回的时候需要调用Redis里面的数据那么就直接引入这个文件。然后再进行Redis的增删改查。用完记得关闭Redis

我把端口号放在config.js里面在
在这里插入图片描述

这就跟我app.js里面的对上了
在这里插入图片描述

推荐看新版的:https://blog.csdn.net/a519637560/article/details/106812152

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值