JSON을 페이로드로 사용하는 간단한 웹 서비스에 대한 특정 요청에 대해 간단한 http 프록시를 구현하려고합니다.Mojolicious - http 프록시 역할 수행
이에 대한 정보는 있지만 설명서에는 완전한 예제가 없습니다. 나는 Google 검색 결과에서 찾은 블로그 게시물에서 일부 코드를 시도했지만 아무 것도 얻을 수 없습니다. 여기에 내가있는 곳이있다.
요청은 로그에
sub handle
{
my $self = shift;
my $app = shift;
my $tx = $app->tx;
my $req = $app->req->clone;
$log->info("upstream host is " . $self->{upstream_host});
$log->info("upstream port is " . $self->{upstream_port});
$req->url->scheme("http")
->host($self->{upstream_host})
->port($self->{upstream_port});
$log->info("req: " . $req->to_string);
$log->info("req host:port " . $req->url->host . ":" . $req->url->port);
my $ua = Mojo::UserAgent->new;
my $tx = Mojo::Transaction::HTTP->new(req => $req);
$log->info("response: " . $tx->res->to_string());
$app->render(data => $tx->res->body);
}
모든 것이 올바른 모습과 같이 핸들 방법, 핸들러 객체로 전달되지만, 응답 객체는 404 오류이며, 실제 트래픽이 내 다른 서비스에 도달하지 localhost : 3334에서 수신 대기 중입니다.
2013-07-02 12 : 28 : 26.929793500 [정보] req 호스트 : 포트 127.0.0.1:3334 2013-07-02 12 : 28 : 26.930225500 [Tue 7 월 2 일 12시 28 분 26 초 2013] [정보] 응답 : HTTP/1.1 404 찾을 수 없음
나는이 비 차단 버전을 시도했지만 다시 요청이 전송되지 않았으므로 단순화하려고 시도했다.
감사의 말, 나는 여기서 어디서 잘못되었는지 모르겠습니다. 난 그냥 요청을 복제하고, 다른 서비스에 전달하고, 그 응답을 원래의 클라이언트에 반환하려고한다.
감사합니다, 마이크
handle 메소드가 예상하는 인수를 얻는 지 확인하거나 확인 할 수 있습니까 ('Data :: Dumper' 또는 다른 방법으로)? –
입력이 양호합니다. 지금까지 트랜잭션 코드를 삭제하고 기본 $ ua-> get()을 수행하여이 작업을 수행했습니다. 설명서에 따르면 콜백없이 build_tx()를 사용하면 비 차단 요청이 수행되지만 표시되지는 않습니다. 제 경우에는 요청을 전혀 수행하지 않습니다. –
아, 전 CentOS 6이 아닙니다. perl-Mojolicious-3.05-6.el6.noarch 및 perl 5.10.1. –