浅易Node中间层【只作为中间层】

初志:我并不想转变团队原有开辟形式,前端担任展示和界面路由,后端纯真担任API;
要处置惩罚的题目:
1.效劳端衬着(部份界面【商品界面】须要运用效劳器端衬着,然则治理范例界面并不须要效劳器端衬着);
2.因为题目1的涌现,所以我们须要效劳器端衬着,须要掌握路由,须要部份界面运用后端模板引擎。
3.固然我不想写两套api要求体式格局,Node.js能够搞定运用一套计划;
4.背景效劳要求固然走代办效劳。
计划挑选:
1.koa2基本框架
2.axios–api要求效劳
3.http-proxy–代办转发
其他日记处置惩罚,路由,后端模板引擎,异步语法本身挑选了。
详细完成【仅供参考】:
1.代办转发【写koa2中间件】:婚配要求路由代办转发目的效劳器

//中间件request_proxy.js
var httpProxy = require('http-proxy'); 
//EG:http://localhost:3001/rs-server-api/v1/goods/list
var proxy = new httpProxy.createProxyServer({
    target: 'https://stage.recovery-server.jiahuyunyi.com/',
    changeOrigin: true              // for vhosted sites, changes host header to match to target's host
});
var response_formatter = (ctx) => {
    proxy.web(ctx.req, ctx.res);
    ctx.body = ctx.res;
} 
var url_filter = (pattern) => {
    return async (ctx, next) => {
        var reg = new RegExp(pattern);
        try {
            //经由过程正则的url举行格式化处置惩罚
            if (reg.test(ctx.originalUrl)) {
                response_formatter(ctx);
            }
            await next();
        } catch (error) { 
            //继承抛,让外层中间件处置惩罚日记
            throw error;
        } 
    }
}
module.exports = url_filter;
const request_proxy = require('./middlewares/request_proxy');
//婚配路由/rs-server-api/v1/
app.use(request_proxy('^/rs-server-api/v1/'));

2.后端效劳:固然ajax要求也是用这个js

import axios from "axios";
//没有权限直接跳转到登录界面
function fetchGoodsList() {
    return axios.get('http://localhost:3001/rs-server-api/v1/goods/list');
}
export default {
    fetchGoodsList: fetchGoodsList
}

在controller中挪用效劳

var router = require('koa-router')();
var Service = require('../services/index.js');
router.get('/', async function (ctx, next) {
  ctx.state = {
    title: await Service.fetchGoodsList().then((response) => {
      return JSON.stringify(response.data);
    })
  };
  await ctx.render('index', {
  });
})
module.exports = router;

末了项目DEMO地点,基于很多位先辈代码,仅仅到场代办转发
https://github.com/HereSincer…

    原文作者:here
    原文地址: https://segmentfault.com/a/1190000008250900
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞