express-http-proxy代理設定
2968 ワード
1.据え付けusing a static string also be a function
インターフェースを通してあまりにも大きい内容を要求すると、大きなエラーが返ってきますので、ここで私たちのレスリングにサイズ制限を加えます.
ホストのデフォルトはtrueです.trueの場合は、最初に合致した要求結果のみを返すことが要求されます. falseの場合は、要求は、毎回合致する要求結果を返します.例: asnyc operations promise form
you can modify the proxy's reponse before sending to the clientには二つの方法があります.直接操作 プロミスで非同期操作
npm install express-http-proxy --save
2.文法を使うproxy(host, options);
使用例:var proxy = require('express-http-proxy')
var app = require('express')()
app.use('/proxy', proxy('www.google.com'))
3.proxyのHOSTパラメータの2つの状態app.use('/', proxy('http://www.google.com'))
function selectProxyHost() {
return (new Date() % 2) ? 'http://www.google.com' : 'http://altavista.com'
}
app.use('/', proxy(selectProxyHost))
4.limit属性インターフェースを通してあまりにも大きい内容を要求すると、大きなエラーが返ってきますので、ここで私たちのレスリングにサイズ制限を加えます.
app.use('/proxy', proxy('www.google.com' , {
limit: '5mb'
}))
5.hostのtrueとfalseの2つの状況ホストのデフォルトはtrueです.
function coinToss() {
return Math.random() > .5
}
function getHost() {
return coinToss() ? 'http://www.google.com' : 'http://www.yahoo.com'
}
app.use(proxy(getHost, {
memoizeHost: false
}))
6.請求前に要求情報をどのように修正するかapp.use(proxy('localhost:12345', {
proxyReqPathResolver: function (req) {
var parts = req.url.split('?');
var queryString = parts[1];
var updatedPath = parts[0].replace(/test/, 'tent');
return updatedPath + (queryString ? '?' + queryString : '');
}
}));
app.use('/proxy', proxy('localhost:12345', {
proxyReqPathResolver: function(req) {
return new Promise(function (resolve, reject) {
setTimeout(function () { // simulate async
var parts = req.url.split('?');
var queryString = parts[1];
var updatedPath = parts[0].replace(/test/, 'tent');
var resolvedPathValue = updatedPath + (queryString ? '?' + queryString : '');
resolve(resolvedPathValue);
}, 200);
});
}
}));
7.レスポンスを送信する前にレスポンスをいくつか操作します.you can modify the proxy's reponse before sending to the clientには二つの方法があります.
app.use('/proxy', proxy('www.google.com', {
userResDecorator: function(proxyRes, proxyResData, userReq, userRes) {
data = JSON.parse(proxyResData.toString('utf-8'))
data.newProperty = 'exciting data'
return JSON.stringify(data)
}
}))
app.use('/proxy', proxy('www.google.com', {
userResDecorator: function(proxyRes, proxyResData) {
return new Promise(function(resolve) {
proxyResData.funkyMessage = 'oi io oo ii';
setTimeout(function() {
resolve(proxyResData)
}, 2000)
})
}
}))