zoukankan      html  css  js  c++  java
  • 业务线--node中间层做一个透传的项目

    1,node中间层总结

    1,ejs引入vue的js,路由层(直接透传,自定义行的),比较浅层的一层

     中间件的引入

    const path = require('path')
    const Koa = require('koa')
    const views = require('koa-views')
    const parser = require('koa-bodyparser')
    const koaStatic = require('koa-static')
    const koaMount = require('koa-mount')
    const app = new Koa()
    const { port, routerRoot } = require('./config/base')
    const middlewares = require('./middlewares/index')
    const register = require('./common/register')

    // 公共数据
    app.use(async (ctx, next) => {
    // ejs模版中使用该变量动态加载对应模版
    ctx.state = { EJS_ENV: ['a', 'b', 'c'].indexOf(process.env.JZ_ENV) !== -1 ? 'test' : process.env.JZ_ENV }
    // 继续向下匹配路由
    await next()
    })
    // 入口页-注意:必须放在路由注册前面
    app.use(views(path.join(__dirname, './app'), {
    extension: 'ejs'
    }))
    // post参数解析
    app.use(parser())
    // 自定义拦截器
    middlewares(app)
    // 模块注册
    app.use(register.launch())
    // 静态资源支持
    app.use(koaMount(`${routerRoot}/static`, koaStatic(path.join(__dirname, '../static'))))

    app.listen(port)

    优点,1、内网和内网访问更安全,速度更快,

               2、微信小程序没有办法设置cookie,中间层解决这个问题,

               3、减少不必要的发布,审核,中间层修改域名 ​​​​

    访问的接口错误的拦截

    axios.interceptors.response.use(response => {
    let reqInfo = response.config
    let isJsonResponse = !((reqInfo.responseType && reqInfo.responseType !== 'json'))
    let methods = reqInfo.method
    let url = reqInfo.url
    let params = reqInfo.params || ''
    let data = reqInfo.data || ''
    console.log('interceptors================================')
    if (isJsonResponse && response.data.code !== 0) {
    // 与rd约定,接口成功返回code===0,其余为失败
    console.log('response===========================' + response)
    logger.warn(`${methods} rd: ${url} params:${JSON.stringify(params)} data:${JSON.stringify(data)} response:${JSON.stringify(response.data)}`)
    logger.warn(`header:${JSON.stringify(reqInfo.headers)}`)
    } else {
    (
    logger.info(`Success ${methods} rd: ${url} params:${JSON.stringify(params)} data:${JSON.stringify(data)}`)
    )
    }
    return response
    }, error => {
    let reqInfo = error.config
    let params = reqInfo.params || ''
    let data = reqInfo.data || ''
    logger.error(`${reqInfo.method} ${reqInfo.url} params:${JSON.stringify(params)} data:${JSON.stringify(data)}`)
    return Promise.reject(error)
    })
    }

     注册路由,采用router.all

  • 相关阅读:
    【剑指Offer】21、栈的压入、弹出序列
    【剑指Offer】20、包含min函数的栈
    【剑指Offer】19、顺时针打印矩阵
    【Shell编程】Shell基本语法
    【Shell编程】Shell程序设计
    linux 大中括号变量解读
    Python 二进制,十进制,十六进制转换
    Python3.x和Python2.x的区别
    python通过SSH登陆linux并操作
    PEP8特性
  • 原文地址:https://www.cnblogs.com/yayaxuping/p/10167819.html
Copyright © 2011-2022 走看看