python / perl / shell脚本中的条件代理服务器

时间:2013-03-26 19:10:43

标签: python perl http shell proxy

我有一个应用程序查询hostName:端口以获取某些服务,即web服务。在开发期间,第三方无法使用或正在构建某些服务,因此开发我的应用程序我正在考虑使用带有soapUI的mockservices作为某些服务的存根。

问题是我只能将我的应用程序指向一个方向,所以如果我指向模拟服务,我需要确保模拟服务模拟所有服务(> 50),这太过分了高架。因此,我正在考虑将我的应用程序指向一个代理服务器,该服务器将一些请求重定向到模拟服务并保留给实际的服务提供者。有什么方法可以通过一个简单的脚本来做到这一点吗?

1 个答案:

答案 0 :(得分:2)

不确定。使用Perl的粗略草图:

#!perl
use strict;
use warnings;
use Plack::App::Proxy;

my $live_proxy = Plack::App::Proxy->new(
    remote => "http://live.soap.service.com:80/"
);

my $soapui_proxy = Plack::App::Proxy->new(
    remote => "http://localhost:4567/"
);

sub {
    my $env = shift;
    if ($env->{REQUEST_URI} =~ m[^/some/path]) {
        return $soapui_proxy->($env);
    } else {
        return $live_proxy->($env);
    }
};

安装Plack并将其作为plackup filename运行。它构建了两个代理应用程序,一个用于将所有请求转发到实时服务URL,另一个用于将所有请求转发到模拟服务URL。然后,包装器应用程序根据URL选择要发送任何给定请求的应用程序(或者根据需要基于其他内容)。