在公司的项目中用了 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的效果。