如何利用node轉(zhuǎn)發(fā)請求詳解
前言
本篇文章基于 vue、node(koa)
需求
vue 項目開發(fā)過程中,接口跨域是一個很常見的問題。在開發(fā)時候可以用 vue 自帶的 proxy 可以輕松解決。生產(chǎn)環(huán)境下,前端項目往往是部署在后端項目下,不會存在跨域的問題,接口前綴可以忽略。
dev 環(huán)境下,請求一個產(chǎn)品列表接口,我們可能會這么做:
https://www.baidu.com/api/product/list
生產(chǎn)環(huán)境下,前綴可以忽略:
/api/product/list
問題來了,如果我們想在本地測試生產(chǎn)環(huán)境下的前端項目,會存在跨域的問題;發(fā)給后端部署項目又太麻煩,修改代價太大。我們可以自己部署一個簡易的 node 服務(wù),來部署自己的前端項目~
實現(xiàn)
0. 安裝依賴
npm i koa --save-dev npm i koa-static --save-dev npm i koa-mount --save-dev npm i http-proxy-middleware --save-dev npm i koa2-connect --save-dev
1. koa 搭建簡易服務(wù)端
引入 koa,然后監(jiān)聽端口
const Koa = require('koa');
const Koa = require('koa');
const path = require('path');
const app = new Koa();;
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(` Your application is running here: http://localhost:${port}`);
});
開放 dist(即打包出來的目錄)
const koaStatic = require('koa-static');
const koaMount = require('koa-mount');
// 開放目錄
app.use(koaMount('/', koaStatic(resolve('../dist'))));
這樣差不多就完成了,跑服務(wù)然后打開 3000 端口,項目能夠正常訪問:

2. 轉(zhuǎn)發(fā)接口請求
項目是能正常請求了,可是還需要處理接口問題,即 node 當(dāng)成中間件,轉(zhuǎn)發(fā)前端接口請求到真正的后端接口
const { createProxyMiddleware } = require('http-proxy-middleware');
const k2c = require('koa2-connect');
app.use(async (ctx, next) => {
const url = ctx.path;
if (url.startsWith('/api')) {
ctx.respond = false;
await k2c(
createProxyMiddleware({
target: # 后端的接口地址,
changeOrigin: true,
secure: false,
}),
)(ctx, next);
}
return await next();
});
最后再打開瀏覽器查看,大功告成,接口轉(zhuǎn)發(fā)成功~

完整代碼
總結(jié)
到此這篇關(guān)于如何利用node轉(zhuǎn)發(fā)請求的文章就介紹到這了,更多相關(guān)node轉(zhuǎn)發(fā)請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nodejs進階:express+session實現(xiàn)簡易登錄身份認證
本篇文章主要介紹了Nodejs進階:express+session實現(xiàn)簡易身份認證示例,非常具有實用價值,需要的朋友可以參考下2017-04-04
pnpm實現(xiàn)依賴包共享和依賴包項目隔離的方法詳解
pnpm是Node.js的包管理器,它是 npm 的直接替代品,相對于npm和yarn它的優(yōu)點就在于速度快和高效節(jié)省磁盤空間,本文主要講解pnpm相比于npm/yarn如何利用軟硬鏈接來節(jié)省磁盤空間,以及如何實現(xiàn)依賴包共享和依賴包項目隔離的,需要的朋友可以參考下2024-05-05
node.js支持多用戶web終端實現(xiàn)及安全方案
這篇文章主要介紹了node.js支持多用戶web終端實現(xiàn)方案以及web終端安全性保證的解決方法,一起學(xué)習(xí)參考下。2017-11-11
Node.js使用SQLite數(shù)據(jù)庫方法大全
Node.js是一種流行的JavaScript運行時,提供了許多有用的模塊和庫來構(gòu)建Web應(yīng)用程序,而SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫,它可以運行在各種操作系統(tǒng)上,包括Windows、Linux和Mac OS X等,在Node.js中,可以通過安裝sqlite3模塊來訪問SQLite數(shù)據(jù)庫2023-10-10
nodejs命令行參數(shù)處理模塊commander使用實例
這篇文章主要介紹了nodejs命令行參數(shù)處理模塊commander使用實例,commander是一個非常高大上的令行參數(shù)處理模塊,需要的朋友可以參考下2014-09-09
Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件
這篇文章主要介紹了Node.JS循環(huán)刪除非空文件夾及子目錄下的所有文件及node.js遞歸刪除非空文件夾的實例代碼,需要的朋友可以參考下2018-03-03

