首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Plack中安装“主机”::Builder

在Plack中安装“主机”::Builder
EN

Stack Overflow用户
提问于 2015-10-01 18:13:54
回答 1查看 197关注 0票数 4

Plack::建筑工人这个答案的概要内容如下:

代码语言:javascript
复制
# in .psgi
use Plack::Builder;

my $app = sub { ... };

builder {
    mount "/foo" => builder {
        enable "Foo";
        $app;
    };

    mount "/bar" => $app2;
    mount "http://example.com/" => builder { $app3 };
};

我尝试了以下几点:

代码语言:javascript
复制
use Plack::Builder;
my $app1 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 1"] ]; };
my $app2 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 2"] ]; };
my $app3 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 3"] ]; };

builder {
        mount "/a1" => builder { $app1 };
        mount "http://myhost.com" => builder{ $app2 };
        mount "/" => builder{ $app3 };
}

但当试图用plackup运行它时,got:

加载/tmp/app.psgi:路径需要以/ at /home/cw/.anyenv/envs/plenv/versions/5.20.3/lib/perl5/site_perl/5.20.3/Plack/Builder.pm行108开始时出错。

怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 18:42:13

我在文档中没有明确提到这一点,但是除了主机名(例如http://myhost.com/foo )之外,您还必须包括一个路径组件。变化

代码语言:javascript
复制
mount "http://myhost.com" => builder{ $app2 };

代码语言:javascript
复制
mount "http://myhost.com/" => builder{ $app2 };

(即主机/上的myhost.com)

相关代码在Plack::App::URLMap中(mount简单地调用Plack::App::URLMap的map方法):

代码语言:javascript
复制
if ($location =~ m!^https?://(.*?)(/.*)!) {
    $host     = $1;
    $location = $2;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32894204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档