资讯专栏INFORMATION COLUMN

koa 利用 node-fetch 写个自己的代理

2501207950 / 514人阅读

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

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

用到了 fetch api,可以看 node-fetch

// proxy.js
import fetch from "node-fetch"

export default (...args) => {
  return fetch.apply(null, args).then(function (res) {
    return res.text()
  })
}
}

// 没错,就是这么简单,稍微把fetch封装下就可以了


// app.js
import 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的结果。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86195.html

相关文章

  • node服务端渲染(完整demo)

    摘要:简介搭建多页面服务端渲染技术点搭建服务创建页面路由模板引擎组合打包多页面端异步请求服务端日志打印项目源码运行一现代服务端渲染的由来服务端渲染概念是指,浏览器向服务器发出请求页面,服务端将准备好的模板和数据组装成完整的返回给浏览器展示前端后 简介 nodejs搭建多页面服务端渲染 技术点 koa 搭建服务 koa-router 创建页面路由 nunjucks 模板引擎组合html ...

    cheukyin 评论0 收藏0
  • 第三方登入例子-GitHub授权登入(node-koa

    摘要:前言第三方登入太常见了,微信,微博,总有一个你用过。本项目源码地址第三方登入第三方登入主要基于。授权回掉处理获取在第一步授权请求成功后会给应用返回一个回掉。 前言 第三方登入太常见了,微信,微博,QQ...总有一个你用过。当然看这篇文章的你,应该还用过github登入。这篇分享是在上一篇基于node的登入例子(node-koa-mongoose)的基础增加了github账号第三方授权登...

    Bmob 评论0 收藏0
  • koa利用nginx反向代理动态及静态文件

    摘要:背景最近在做一个基于的微信公众平台脚手架,由于我只有一个域名,现在同时有好几个应用在上面挂载着,所以只能做一下反向代理,可是反向代理只能代理动态文件,对于静态资源貌似没有什么好的解决方法本文针对以上问题进行逐步解决,通过修改相关配置,并结合 背景 最近在做一个基于koa的微信公众平台脚手架,由于我只有一个域名demozhan.com,现在同时有好几个web应用在上面挂载着,所以只能做一...

    opengps 评论0 收藏0
  • koa利用nginx反向代理动态及静态文件

    摘要:背景最近在做一个基于的微信公众平台脚手架,由于我只有一个域名,现在同时有好几个应用在上面挂载着,所以只能做一下反向代理,可是反向代理只能代理动态文件,对于静态资源貌似没有什么好的解决方法本文针对以上问题进行逐步解决,通过修改相关配置,并结合 背景 最近在做一个基于koa的微信公众平台脚手架,由于我只有一个域名demozhan.com,现在同时有好几个web应用在上面挂载着,所以只能做一...

    figofuture 评论0 收藏0
  • 老项目改造记

    摘要:前言老项目,项目情况端配置运行环境方面有些人开发环境是,有些是。以我的开发环境为例老项目的运行,开发时需要先执行一个脚本经历过一次风波之后做的人走光啦,但是老项目要继续维护。老项目改造其实还有不少坑,等我想起来再慢慢更新。 前言 老项目,React + PHP + nginx 项目情况 PHP端配置 PHP运行环境方面:有些人开发环境是wamp(apache + PHP),有些是np...

    SimonMa 评论0 收藏0

发表评论

0条评论

2501207950

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<