博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
koa 利用 node-fetch 写个自己的代理
阅读量:6477 次
发布时间:2019-06-23

本文共 1468 字,大约阅读时间需要 4 分钟。

在公司的项目中用了 koa 向前端(还是我)提供数据接口和渲染页面。有一些操作是和 Java 端交互,所以需要写一些代理转发请求,从网上找了一些koa的代理库,要不就是bug横生;要不就是功能不完全,只能代理 get 请求,于是用 node-fetch 写了个简单的 proxy ,代码挺简单的,写篇博文记录下。

用到了 fetch api,可以看

// proxy.jsimport fetch from 'node-fetch'export default (...args) => {  return fetch.apply(null, args).then(function (res) {    return res.text()  })}}// 没错,就是这么简单,稍微把fetch封装下就可以了// app.jsimport koa from 'koa'import proxy from './proxy'const app         = koa()const proxyServer = koa()app.use(function* (next) {  if ('/users' === this.path && 'GET' === this.method)    this.body = yield proxy('http://localhost:8087/users')  if ('/user' === this.path)    this.body = yield proxy('http://localhost:8087/user', {      method: 'POST',      headers: {        'Accept': 'application/json',        'Content-Type': 'application/json'      },      body: JSON.stringify({        name: 'Hubot',        login: 'hubot',      })    })  yield next})proxyServer.use(function* (next) {  if ('/users' === this.path && 'GET' === this.method)    this.body = {      'test': 1    }  if ('/user' === this.path && 'POST' === this.method) {    this.body= {      'data' : `yes, it's right`    }  }  yield next})app.listen(8086)proxyServer.listen(8087)console.log('server start 8086')console.log('server start 8087')

上面 app.js 中创建了两个 server,8086端口为代理 server, 8087端口为被代理的 server,访问 localhost:8086/users 会返回 {"test": 1},说明get请求代理成功,同理访问 localhost:8086/user,会返回

{ "data": "yes, it's right"},说明成功代理了post请求并返回了被代理server的结果。

转载地址:http://plmko.baihongyu.com/

你可能感兴趣的文章
css布局 - 九宫格布局的方法汇总(更新中...)
查看>>
画图函数——点,线,矩形等等
查看>>
ejabberd_local
查看>>
BZOJ5020 [THUWC 2017]在美妙的数学王国中畅游LCT
查看>>
hdu 6030 矩阵快速幂
查看>>
tomcat类加载机制
查看>>
ado.net2.0中的缓存使用SqlDependency类
查看>>
Java基础学习总结(94)——Java线程再学习
查看>>
iOS开发之调用系统设置
查看>>
利用 ACPI\\ACPI0003设备 判断笔记本还是台式机
查看>>
解决wampserver 服务无法启动
查看>>
ES6中Promise封装ajax的写法
查看>>
初次使用 VUX
查看>>
javascript 字符串转数字的简便写法
查看>>
html之div始终停留在屏幕中间部分
查看>>
Spring中jdbcTemplate的用户实例
查看>>
[模板] 快速傅里叶变换/FFT/NTT
查看>>
DecimalFormat 数据格式设置 SimpleDateFormat时间格式的用法介绍 --转载
查看>>
Android 的Margin和Padding属性以及支持的长度单位
查看>>
HDU ACM 1050 Moving Tables
查看>>