国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

簡易Node中間層【只作為中間層】

CntChen / 2109人閱讀

摘要:方案選擇基礎框架請求服務代理轉發其余日志處理,路由,后端模板引擎,異步語法自己選擇了。

初衷:我并不想改變團隊原有開發模式,前端負責展現和界面路由,后端單純負責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...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81389.html

相關文章

  • koa2 一網打盡(基本使用,洋蔥圈,中間件機制和模擬,源碼分析(工程,核心模塊,特殊處理),核心點

    摘要:洋蔥圈處理模型?;诘撵`活強大的中間件機制。參考官網提供的基本,不在贅述部分實現,參考源碼分析常用服務端口監聽返回適用于方法的回調函數來處理請求。 本文 github 地址: https://github.com/HCThink/h-blog/blob/master/source/koa2/readme.md github 首頁(star+watch,一手動態直達): https:...

    william 評論0 收藏0
  • 教你編寫 Node.js 中間件,實現服務端緩存(附demo源碼)

    摘要:但是這篇文章除去科普基本概念外,更重要的就是介紹中間件思想,并自己來實現一個服務端緩存中間件。 showImg(https://segmentfault.com/img/remote/1460000011043576); Express 作為 Node.js 的框架,如今發展可謂如日中天。我很喜歡其靈活、易擴展的設計理念。尤其是該框架的中間件架構設計:使得在應用中加入新特性更加標準化、...

    jerryloveemily 評論0 收藏0
  • KOA2框架原理解析和實現

    摘要:實現的四大模塊上文簡述了源碼的大體框架結構,接下來我們來實現一個的框架,筆者認為理解和實現一個框架需要實現四個大模塊,分別是封裝創建類構造函數構造對象中間件機制和剝洋蔥模型的實現錯誤捕獲和錯誤處理下面我們就逐一分析和實現。 什么是koa框架? ? ? ? ?koa是一個基于node實現的一個新的web框架,它是由express框架的原班人馬打造的。它的特點是優雅、簡潔、表達力強、自由度...

    tracymac7 評論0 收藏0
  • KOA2框架原理解析和實現

    摘要:實現的四大模塊上文簡述了源碼的大體框架結構,接下來我們來實現一個的框架,筆者認為理解和實現一個框架需要實現四個大模塊,分別是封裝創建類構造函數構造對象中間件機制和剝洋蔥模型的實現錯誤捕獲和錯誤處理下面我們就逐一分析和實現。 什么是koa框架? ? ? ? ?koa是一個基于node實現的一個新的web框架,它是由express框架的原班人馬打造的。它的特點是優雅、簡潔、表達力強、自由度...

    liangzai_cool 評論0 收藏0

發表評論

0條評論

CntChen

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<