我是Mojolicious并创建REST服务的新手。我正在尝试编写REST服务来查询资产数据库。
示例网址:
http://test.example.com:3000/test/asset/web01.example.local
它被路由到以下逻辑:
get '/test/asset/:node' => sub {
my $self = shift;
my $node = $self->stash('node');
my $sql = qq {
SELECT id, name, type, location
FROM inventory
WHERE name = ?
};
my $cursor = $self->db->prepare($sql);
$cursor->execute($node,$node);
my $record = $cursor->fetchrow_hashref;
$cursor->finish;
$self->db_disconnect;
say $self->stash('node');
return $self->render(json => $record);
};
"说"声明显示.example.local被截断:
[Wed Aug 27 21:24:05 2014] [debug] GET "/test/asset/web01.example.local".
[Wed Aug 27 21:24:05 2014] [debug] Routing to a callback.
web01
[Wed Aug 27 21:24:05 2014] [debug] 200 OK (0.004076s, 245.339/s).
如何让我的服务接受包含点的字符串呢?如果这是不可能的,那么我可以使用GET请求并传递FQDN(我唯一可以用来查询2个独立的数据库)并返回结果?
答案 0 :(得分:1)
我认为您必须将占位符的类型从通用更改为放宽。
get '/test/asset/*node' => sub {
# your sub continues here ...