nodejs koa web搭建
来源:互联网 发布:淘宝现金券 编辑:程序博客网 时间:2024/06/08 14:36
平台 :windows
node version : >=v7.6.0
$ npm i koa$ node my-koa-app.js
git地址:https://gitee.com/pmj_19950812/ruishipmjNode.git
1.创建路由
var router = require(‘koa-router’)();
router.get(‘/routeName’, async func);
app.use(router.routes());
app.listen(port, callbackFunc);
2.把module加载进属性
/** * 把指定文件加载成路由 * @param {*} routePath 路径 * @param {*} routeObj async 函数 * @param {*} file 文件名 */var loadUrl = (routePath, routeObj, file) => { for (var key in routeObj) { var urlInfo = key.split('_'); var method = config.httpDefaultMethod; var action = ''; var param = ''; if (urlInfo.length == 1) { action = routePath + '/' + key; } else if (urlInfo.length == 2) { action = routePath + '/' + urlInfo[0]; method = urlInfo[1]; } let have = false; if (method == 'get') { for (let i = 0; i < haveGetUrl.length; i++){ if (haveGetUrl[i] == action){ have = true; } } if (!have) { haveGetUrl.push(action); } else { var errObj = {'errAction': action, 'errWay': __dirname + routePath + '\\' + file}; errUrl.push(errObj); return; } router.get(action, routeObj[key]); } else if (method == 'post') { for (let i = 0; i < havePostUrl.length; i++){ if (havePostUrl[i] == action){ have = true; } } if (!have) { havePostUrl.push(action); } else { var errObj = {'errAction': action, 'errWay': __dirname + routePath + '\\' + file}; errUrl.push(errObj); return; } router.post(action, routeObj[key]); } console.log('auto map route -> [%s]%s', method, action); }}
3.增加根据文件的路径添加路由
var readDirFun = (filePath) =>{ var readDir = fs.readdirSync(router_path + filePath); readDir.forEach( file => { //如果是文件夹 if (file.indexOf('.') == -1){ if ( !(file == 'help')){ readDirFun(filePath + '/' + file); return; } else { return; } } //这里可以加入你想排除的路由 if(file.endsWith('.js') < 0 || file == TAG || file == 'httpServer2.js' || file.endsWith('Help.js')){ return; } else { loadUrl(filePath, require(router_path + filePath + '/' + file), file); } })};
4.添加http请求的参数处理
const bodyParser = require('koa-bodyparser');app.use(bodyParser());
这个代码必须在router加载之前,处理get,post请求的参数,创建迭代器,把所有请求的参数都绑定在ctx.msg上便于处理请求
app.use(async (ctx, next) =>{ if (ctx.request.method == 'GET') { ctx.msg = ctx.request.query; } else if (ctx.request.method == 'POST') { ctx.msg = await parse.json(ctx); } ctx.body = {}; try { await next(); if (ctx.conn) await ctx.conn.commit(); } catch (ex) { if (ctx.conn) ctx.conn.rollback(); ctx.body = { success: false, msg: ex.message } } finally { if (ctx.conn) ctx.conn.release(); }});
测试代码:
"use strict"function test(){}test.prototype.test_get = async ctx => { console.log('test');} module.exports = new test();
测试结果:
阅读全文
1 0
- nodejs koa web搭建
- nodejs与koa入门
- nodejs koa framework overview
- nodeJs之koa入门
- nodejs搭建web服务器
- nodejs搭建web服务器
- nodejs搭建web服务器
- Koa、Express Web单元测试
- Nodejs开发web环境搭建
- nodejs搭建web服务教程
- nodejs KOA request pipe 同步下载图片
- nodejs koa forEach 不能使用 yield
- nodejs/koa中route的全匹配
- Nodejs-Koa是一个干净的框架
- nodejs-koa框架的中间件级联
- nodejs原生,express,koa跨域问题解决
- nodejs koa CROS 接入踩坑日志
- nodejs之koa学习笔记(1)
- lintcode---最大子数组差
- pymysql cursor传参报错TypeError: %d format: a number is required, not str
- Spring全家桶
- springboot+thymeleaf+i18n
- Pandas秘籍【第六章】
- nodejs koa web搭建
- 封装继承多态
- C语言·数组知识小结
- java JDBC 使用DBCP连接池
- python django框架的模型的创建
- C++primer薄片系列之特殊工具与技术
- Uva 11572 Unique snowflakes
- Mac使用class-dump进行IOS逆向工程
- [uboot] (番外篇)global_data介绍