业务线--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

 

posted @ 2018-12-24 11:50  focus_yaya  阅读(867)  评论(0编辑  收藏  举报