精华内容
下载资源
问答
  • 文章目录koa使用自定义日志中间件项目结构程序入口 /src/app.js通用配置模块 /src/config/baseConfig.js日志中间件模块 /src/lib/requestLog.js样例输出 /logs/access.log koa使用自定义日志中间件 注明:本样例程序...

    个人博客网站:https://blog.crazymad.top

    koa使用自定义日志中间件

    注明:本样例程序运行在koa^2.5.3版本上

    项目结构

    |- package.json
    |- node_modules
    |- logs					// 运行日志目录
       	|- access.log
    |- src					// 源码文件目录
       	|- config				// 配置文件目录
       		|- baseConfig.js 		// 通用配置文件
       	|- controller			// 路由文件目录	
       		|- testRouter.js		// 测试用的路由文件
       	|- lib					// 自定义模块目录
       		|- requestLog.js
       	|- app.js 				// 程序入口文件
    

    程序入口 /src/app.js

    const koa = require('koa')							// koa核心模块
    const Router = require('koa-router')				// 路由模块
    
    const LoggerFactory = require('./lib/requestLog')	// 日志模块
    const config = require('./config/baseConfig')		// 配置文件模块
    const router = new Router()							// 为了方便测试,就不专门写路由文件了,直接在app.js里面写路由
    router.get('/test', (ctx, next) => {				// 测试用的路由
        ctx.body = 'hello world'
    })
    
    var app = new koa()
    // 使用日志中间件,需要放在router前面
    app.use(LoggerFactory.getLogger(config))
    // 使用路由模块
    app.use(router.routes()).use(router.allowedMethods())
    app.listen(8085);
    

    通用配置模块 /src/config/baseConfig.js

    const path = require('path')
    
    var config = {
    	// 基本路径配置
        base: {
        	// 项目工作目录绝对路径
            workDir: path.join(__dirname, '../../'),
            // 源码目录绝对路径
            srcDir: path.join(__dirname, '../')
        },
        // 日志路径配置
        log: {
        	// 日志文件夹绝对路径
            logDir: path.join(__dirname, '../../logs'),
            // 日志文件相对路径
            accessLogFile: 'access.log'
        }
    }
    
    module.exports = config
    

    日志中间件模块 /src/lib/requestLog.js

    const fs = require('fs')
    const path = require('path')
    
    class LoggerFactory {
    	// 由外部传入的配置决定日志文件的位置
        static getLogger(config) {
        	// http请求日志输出文件绝对路径
            var accessLogFile = path.join(config.log.logDir, config.log.accessLogFile)
            // 返回中间件处理函数
            return async function log(ctx, next) {
                const start = Date.now()
                const requestTime = new Date()
                return next().then(() => {
                    const ms = Date.now() - start
                    const clientIp = ctx.request.ip.match(/([0-9]{1,3}\.){3}[0-9]{1,3}/g)[0]
                    let logout = `${clientIp} -- ${requestTime} -- ${ctx.method} -- ${ctx.url} -- ${ms}ms`
                    // 命令行模式下向终端输出日志
                    console.log(logout)
                    // 输出日志文件
                    fs.appendFileSync(accessLogFile, logout + '\n')
                })
            }
        }
    }
    
    module.exports = LoggerFactory
    

    样例输出 /logs/access.log

     127.0.0.1 -- Mon Oct 08 2018 23:04:51 GMT+0800 (中国标准时间) -- GET -- /test -- 29ms
     127.0.0.1 -- Mon Oct 08 2018 23:04:53 GMT+0800 (中国标准时间) -- GET -- /test -- 3ms
     127.0.0.1 -- Mon Oct 08 2018 23:04:53 GMT+0800 (中国标准时间) -- GET -- /test -- 1ms
    

    更多博客请关注个人博客网站:https://blog.crazymad.top

    展开全文
  • koa-自定义中间件

    万次阅读 2020-08-19 15:14:12
    事先准备 1、初始化项目 npm init 2、安装依赖 cnpm install -g koa-generator...自定义中间件的话一般是创建一个js文件,在app.js中引入并使用,如下所示 function pv(ctx) { //do something Write your code lo.

    在这里插入图片描述

    事先准备
    1、初始化项目 npm init 
    
    2、安装依赖 cnpm install -g koa-generator 
    
    3、进入项目并安装依赖  cd koaProject & cnpm i 
    
    4、启动项目 npm start koaProject 
    
    注意这里用的淘宝的镜像源
    
    自定义中间件
    
    自定义中间件的话一般是创建一个js文件,在app.js中引入并使用,如下所示
    
    function pv(ctx) {
    
        //do something  Write your code logic
        
        global.console.log(ctx.path);
        
        global.console.log('this is define middleware')
    }
    
    module.exports = () => {
    
        return async(ctx, done) => {
        
            pv(ctx);
            
            await done();
        }
    }
    
    在app.js引入并使用
    
    const pv = require('./middleware/koa-pv')//引入
    
    app.use(pv())///使用
    

    谢谢观看,如有不足,敬请指教

    展开全文
  • node -koa 自定义中间件

    2020-02-10 22:02:14
    koa中编写中间件,很简单: 下边,我是写了一个异常捕获中间件,在app.js中使用app.use()注册即可: // errMiddleWare .js const errMiddleWare = async (ctx, next) => { try { await next() // 加上了...

    koa中编写中间件,很简单:

    下边,我是写了一个异常捕获中间件,在app.js中使用app.use()注册即可:

    // errMiddleWare .js
    const errMiddleWare = async (ctx, next) => {
        try {
            await next() // 加上了await ,相当于等所有的中间件都执行完毕后,这个next才会执行
        }catch(err) {
            ctx.body = '服务器异常,请稍后!!!'
        }
    }
    module.exports = {
        errMiddleWare
    }
    
    //app.js
    const App = require('koa') // koa 框架
    const { errMiddleWare } = require('./errMiddleWare/errMiddleWare.js')
    const app = new App()
    app.use(errMiddleWare) // 注册自定义异常捕获中间件
    app.litsen(3000)

    tips:

    1、异常捕获中间件,如果你想让异常捕获中间件 捕获 全局所有的异常错误,需要放到所有中间件的前边,原因也很简单,加上await next( ),永远会等到下一个中间件执行完毕之后,它才会返回结果,所以全局的异常捕获中间件 只有放在最前边,才会捕获到代码执行过程中的任何错误:

    app.use(async (ctx, next) => {
        const res = await next()
        console.log('1', res)
    })
    
    app.use(async (ctx, next) => {
        const res = await next()
        console.log('2', res)
    })

     输出结果:

    展开全文
  • 1.新建文件getUser.js,定义一个方法 function getUser() { console.log('Username: Tom') } //导出中间件 module.exports = function() { return async function(ctx, next) { ...const Koa = require('koa') c

    1.新建文件getUser.js,定义一个方法

    function getUser() {
        console.log('Username: Tom')
    }
    //导出中间件
    module.exports = function() {
        return async function(ctx, next) {
            getUser();
            await next();
        }
    }
    

    2.在入口文件(app.js)引入并使用

    const Koa = require('koa')
    const app = new Koa()
    const getUser = require('./getUser')
    app.use(getUser())
    
    展开全文
  • 用于日志记录的Koa中间件 它能做什么 每次收到请求时,都会转发或生成一个请求ID,并将其附加到ctx。 它会重复使用以下标头键来重新使用请求ID: x-request-id , x-amzn-RequestId和requestId 。 在请求完成时,...
  • 用于中间件,可根据glob模式,RegExp,字符串或glob数组过滤IP。 支持自定义403 Forbidden消息和自定义ID。 安装 npm i koa-ip-filter --save 产品特点 通过opts.forbidden发出403 Forbidden响应时的自定义消息 通过...
  • 用于记录传入请求的可定制 Koa 中间件。 输出方法、路径、响应状态、花费的时间和请求正文。 安装 $ npm install koa-log-requests --save 用法 var koa = require ( 'koa' ) ; var requests = require ( 'koa-log...
  • 在中间件系统的实现上,KOA中间件通过async/await来在不同中间件之间交换控制权,工作机制和栈结构非常相似,建议结合《express中间件系统的基本实现》对比学习,两个框架所基于的语法特性有区别(exp...
  • 在路由中使用中间件 只有指定路由可以使用中间件,无需在config配置 只需在相关路由的js中引入中间件,给指定路由配置中间件,在第二个参数配置 具体步骤如下: 新建app/middleware/test.js module.exports=...
  • 【摘要】 KOA中间件的基本运作原理 示例代码托管在:http://www.github.com/dashnowords/blogs 在中间件系统的实现上,KOA中间件通过async/await来在不同中间件之间交换控制权,工作机制和栈结构非常相似,建议...
  • react客户端渲染的缺点:首屏速度慢,对SEO不友好 浏览器请求步骤 客户端跳转 1. 浏览器发起请求 /index 1. 点击按钮 2. koa接受请求,并且调用nextjs ...
  • 文章目录koa post提交数据原生Nodejs获取post提交数据Koakoa-bodyparser中间件的使用koa-static静态资源中间件art-template模板引擎常见模板引擎的性能对比模板渲染模板核心方法语法:输出原文输出条件循环变量...
  • 其他自定义Koa中间件可用于自定义响应。 返回:函数— Koa中间件。 例子 import 。 import { errorHandler } from 'graphql-api-koa' ; import errorHandler from 'graphql-api-koa/public/errorHandler.js' ; ...
  • [Koa2]Koa2中间件

    2020-08-27 13:48:48
    Koa2中间件 ...二、自定义一个Koa2中间件 新建一个目录/middleware 在目录下创建一个文件koa-m1.js 编写中间件,在koa-m1.js中 /* 这个函数中写中间件的处理过程, * 具体要看中间件想要实现什么功能
  • koa2中间件

    2019-07-08 21:19:13
    1.什么是koa2中间件koa对网络请求采用了中间件的形式处理,中间件可以介入请求和相应的处理,是一个轻量级的模块,每个中间负责完成某个特定的功能。中间件的通过next函数联系,执行next()后会将控制权交给下一个...
  • 在上一篇文章里,已经对v2版本的koa中间件原理做了逐行分析,讲清楚了它的流程控制和异步方案。 但是,仍然有大量的基于koa的项目、框架、库在基于v1版本的koa在工作,而它的中间件是Generator函数,其运行机制与v2...
  • 自定义中间件

    2020-08-16 17:10:42
    // 自定义 const fs = require('fs'); module.exports = function kkbStatic(dir) { return (ctx, next) => { // console.log(ctx.url); if (ctx.url.startsWith( dir )) { // 根据规则找到服务器中指定的...
  • 简单的微信公众平台接入中间件koa2) 环境依赖 node v4.4.4+ npm v3.10.6 babel v6.14.0 实现功能 根据配置自动接入公众号 默认自动回复文本消息 支持自定义规则,进行自动回复(包括文本,图片,音乐,小视频,...
  • koa中间件,分全局中间件和局部中间件。 router.get可以接受多个参数,只对该路径生效。 app.use()中间件对所有的路径都生效。 全局中间件(任何请求都会走进来) 路由中间件(匹配请求路径和请求方法才走进来) ...
  • node服务器,koa的中间件koa-body 为什么使用koa-body? 在使用XMLHttpRequest2发送的FormData数据时,koa服务中除koa-body外,busboy、body-parse、multer...koa中间件,一个功能齐全的请求体解析器。支持multipart...
  • koa Passport中间件

    2019-10-25 15:49:09
    Node 认证中间件 Passport 学习笔记 1. 综述 GENERAL Simple, unobtrusive authentication for Node.js 1. 综述 GENERAL 1.1. 概览 Overview 1.2. 认证 Authenticate 1.2.1. 重定向 Redirects 1.2.2. 快报 ...
  • koa常用中间件的使用

    2021-01-05 18:15:32
    并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序 注:文章有些长,阅读完大概需要半个小时哈????~ const http = require('http'); const server = http.createServ
  • 对于一个服务器应用来说,日志的记录是必不可少的,我们需要使用其记录项目程序每天都做了什么,...日志中间件开发工具log4js 在node当中没有自带的日志模块,所以需要使用第三方模块 使用模块:log4js 安装:&nb...
  • 本文主要是为了介绍路由的作用,以及在 Koa 路由中间件的使用,一些高级用法,和实用技巧等 什么是路由? 处理不同的 URL 处理不同的 HTTP 方法 (GET、POST、PUT、DELETE、PATCH、OPTIONS) 解析 URL 上的参数 于 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,495
精华内容 598
关键字:

自定义koa中间件