koa2 实现 Http 请求代理

所需插件

http-proxy-middleware

http-proxy-middleware 是 Express 配置代理的中间件。基础用法如下:

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();

app.use('/api', createProxyMiddleware({ target: 'http://www.example.org', changeOrigin: true }));
app.listen(3000);

注意,上面的例子是 Express 的用法。因为 http-proxy-middleware 是 Express 的中间件。如果要在 koa 中使用,需要借助 koa-connect。

koa2-connect

koa-connect 的作用是让 Express 的中间件可以在 koa 中使用。 用法如下:

const Koa = require('koa')
const c2k = require('koa2-connect')
 
// 创建一个 Express 中间件
function connectMiddlware (req, res, next) {
  res.writeHead(200, {'Content-Type': 'text/plain'})
  res.end('From the Connect middleware')
  next()
}
 
// 创建一个 Koa2 中间件
async function koaMiddleware(ctx, next) {
  try {
    await next();
  } catch (e) {
    // Normal error handling
  }
  // Normal control flow
}
 
const app = new Koa()
app.use(koaMiddlware) // 在 koa 中使用 koa 中间件
app.use(c2k(connectMiddlware)) // 在 koa 中使用 Express 中间件
app.use((ctx, next) => {
  console.log('It will continue on to here')
})
 
app.listen(3000)

关于 Express 中间件和 koa 中间件的区别,可查看《详解express与koa中间件模式对比》做简单了解。

在 koa 中使用 http-proxy-middleware

// koa2 app.js
const Koa = require('koa');
const app = new Koa();
const { createProxyMiddleware } = require('http-proxy-middleware');
const koaConnect = require('koa2-connect');

app.use(
	koaConnect(
    // 代理全部以 /api 开头的 HTTP 请求
		createProxyMiddleware('/api', {
			target: 'http://www.example.org', // 目标服务器地址
			changeOrigin: true	// 允许跨域
		})
	)
);

module.exports = app;

通过以上配置就可以简单实现 koa HTTP 请求的代理功能了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值