使用 nodejs 启动代理服务器,以便它处理以“/wps_proxy/wps_proxy?url=”开头的请求
Start a proxy server with nodejs so that it serves requests preprended with "/wps_proxy/wps_proxy?url="
我想用 node.js 启动一个代理服务器,以便它处理以“/wps_proxy/wps_proxy?url=”为前缀的请求。我想要它以便我可以使用 wps-js library of north52(检查安装提示)。我已经有一台服务器 运行 我的应用程序。
到目前为止我所做的尝试是:
server.js 文件
var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var path = require("path");
var app = express();
app.use(express.static(__dirname + '/' + 'public'));
var urlencodedParser = bodyParser.urlencoded({ extended: false });
//****** this is my try ******************************
app.get('/wps_proxy/wps_proxy',function (req,res){
res.sendfile(__dirname + '/' + 'public/wps_proxy/wps-js/target/wps-js-0.1.2-SNAPSHOT/example.html');
if(req.query !== undefined){//because it enters sometimes without url
var http = require('http');
//Options to be used by request
var options = {
host:"geostatistics.demo.52north.org",//fixed given data
port:"80",
path:"/wps/WebProcessingService"
};
var callback = function(response){
var dat = "";
response.on("data",function(data){
dat+=data;
});
response.on("end", function(){
res.end(dat)
})
};
//Make the request
var req = http.request(options,callback);
req.end()
}
})
var ipaddress = process.env.OPENSHIFT_NODEJS_IP||'127.0.0.1';
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
app.set('port', port);
app.listen(app.get('port'),ipaddress, function() {
console.log( 'Server started on port ' + app.get('port'))
})
//***************************************
但它不起作用..我认为数据没有正确发回..
这是我想做的一个活生生的例子.. http://geoprocessing.demo.52north.org/wps-js-0.1.1/
这是我的应用程序的实例(检查控制台是否有错误)http://gws-hydris.rhcloud.com/wps_proxy/wps_proxy
我确实从这个 post 中找到了答案,所以我解决它的方法是:
app.get('/wps_proxy/wps_proxy',function (req,res){
var queryData = url.parse(req.url, true).query;
if (queryData.url) {
request({
url: queryData.url
}).on('error', function(e) {
res.end(e);
}).pipe(res);
}
else {
res.end("no url found");
}
})
我想用 node.js 启动一个代理服务器,以便它处理以“/wps_proxy/wps_proxy?url=”为前缀的请求。我想要它以便我可以使用 wps-js library of north52(检查安装提示)。我已经有一台服务器 运行 我的应用程序。
到目前为止我所做的尝试是:
server.js 文件
var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var path = require("path");
var app = express();
app.use(express.static(__dirname + '/' + 'public'));
var urlencodedParser = bodyParser.urlencoded({ extended: false });
//****** this is my try ******************************
app.get('/wps_proxy/wps_proxy',function (req,res){
res.sendfile(__dirname + '/' + 'public/wps_proxy/wps-js/target/wps-js-0.1.2-SNAPSHOT/example.html');
if(req.query !== undefined){//because it enters sometimes without url
var http = require('http');
//Options to be used by request
var options = {
host:"geostatistics.demo.52north.org",//fixed given data
port:"80",
path:"/wps/WebProcessingService"
};
var callback = function(response){
var dat = "";
response.on("data",function(data){
dat+=data;
});
response.on("end", function(){
res.end(dat)
})
};
//Make the request
var req = http.request(options,callback);
req.end()
}
})
var ipaddress = process.env.OPENSHIFT_NODEJS_IP||'127.0.0.1';
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
app.set('port', port);
app.listen(app.get('port'),ipaddress, function() {
console.log( 'Server started on port ' + app.get('port'))
})
//***************************************
但它不起作用..我认为数据没有正确发回..
这是我想做的一个活生生的例子.. http://geoprocessing.demo.52north.org/wps-js-0.1.1/
这是我的应用程序的实例(检查控制台是否有错误)http://gws-hydris.rhcloud.com/wps_proxy/wps_proxy
我确实从这个 post 中找到了答案,所以我解决它的方法是:
app.get('/wps_proxy/wps_proxy',function (req,res){
var queryData = url.parse(req.url, true).query;
if (queryData.url) {
request({
url: queryData.url
}).on('error', function(e) {
res.end(e);
}).pipe(res);
}
else {
res.end("no url found");
}
})