我正在開發一個小型web應用程序,通常使用相對複雜的流程構建,然後部署到WebLogic。如何編寫提供大多數本地文件的節點快速應用程序,但將某些節點重新路由到另一個域?
但是,我正在使用的部分是使用AngularJS,並且都是HTML和Javascript。它通常會將ajax調用到同一個域中的另一個webapp。爲了縮短我的開發週期,我想避免構建過程並重新加載瀏覽器頁面。
我想我可以用「節點快車」來做到這一點,但細節逃避了我。我已經設法定義了一個非常簡單的應用程序,只是提供本地文件,但現在我必須弄清楚如何檢測某些路徑以匹配表達式,並將這些請求重新路由到對外部域的請求。
因此,如果它獲得「/diag/stuff.html」,「/foo/thing.html」或「/index.html」的請求,它將發回匹配相同路徑的文件。但是,如果路徑匹配「/fooService/.*」,那麼我必須將GET的響應發送回相同的路徑,但在不同的主機和端口上。
這是迄今爲止我的瑣碎的應用程序:
var express = require('express');
var app = express();
app.use("/", express.static(__dirname));
app.listen(8000);
更新:
我喜歡代理的想法,所以我做了本地安裝的「HTTP代理」(我忘了和第一沒有一個全球性的安裝),然後改劇本這樣:
var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var proxy = new httpProxy.RoutingProxy();
app.use("/", express.static(__dirname));
app.get('/FooService/*', function(req, res) {
"use strict";
return proxy.proxyRequest(req, res, {
host: "foohost.net",
port: 80
});
});
app.listen(8000);
這種失敗:
<path>\server.js:4
var proxy = new httpProxy.RoutingProxy();
^
TypeError: undefined is not a function
at Object.<anonymous> (<path>\server.js:4:13)
這裏可能有什麼問題?
更新:
難道是看到的內容有用 「的console.log(HTTPPROXY)」 之後的 「規定」?:
function ProxyServer(options) {
EE3.call(this);
this.web = this.proxyRequest = createRightProxy('web')(options);
this.ws = this.proxyWebsocketRequest = createRightProxy('ws')(options);
this.options = options;
this.webPasses = Object.keys(web).map(function(pass) {
return web[pass];
});
this.wsPasses = Object.keys(ws).map(function(pass) {
return ws[pass];
});
this.on('error', this.onError.bind(this));
}
這是否提出爲何線索「新的httpProxy.RoutingProxy()」說它是未定義的?
這似乎是最好的方式,但我無法得到它的工作。這在「new httpProxy.RoutingProxy()」行失敗,說「未定義不是函數」。 –
我已將示例更新到新庫版 –
Hot dang。這工作。如果我只想透明地代理所有請求,而不僅僅是GET方法調用,我認爲將「app.get」更改爲「app.all」是合理的?例如,在代理POST的回調中,我有什麼不同嗎? –