【发布时间】:2015-03-29 04:01:20
【问题描述】:
我有一个现有的应用程序(我的网站),我正在做一些代码整理,整理的思路与Mojo::Pg 示例here 相同,具有单独的模型和控制器文件保持定义。我的网站同时访问 Flickr 和 Last.fm 的 API,并且我在 Site::Helpers 中定义了一个助手:
$app->helper(
get_base_rest_url => sub {
my ( $self, $config ) = @_;
sswitch ( $config ) {
case 'photos': {
my $base_url = 'https://api.flickr.com/services/rest/';
my $user_id = '7281432@N05';
my $api_key = $self->app->config->{ 'api_token' }{ 'flickr' };
my $url =
"$base_url"
. "?user_id=$user_id"
. "&api_key=$api_key"
. "&per_page=" . $self->session->{ per_page }
. '&format=json'
. '&nojsoncallback=1';
return $url;
}
case 'music': {
my $base_url = 'https://ws.audioscrobbler.com/2.0/';
my $username = 'virtualwolf';
my $api_key = $self->app->config->{ 'api_token' }{ 'last_fm' };
my $per_page = $self->session->{ 'per_page' };
my $url = "$base_url?user=$username&limit=$per_page&api_key=$api_key&format=json";
return $url;
}
}
}
);
我遇到的问题是我不知道如何从 Site::Model::Photos 模块访问该帮助程序。错误是
Can't locate object method "get_base_rest_url" via package "Site::Model::Photos"
这很公平,但我不知道如何真正获得 get_base_rest_url 助手(或者,如何访问 api_token 配置)。
【问题讨论】:
-
使用
URI模块(可能还有URI::QueryParam)来构建详细的URL。此外,您不应该将简单的标量变量放在引号内,如"$base_url",只是$base_url是正确的。很抱歉,这与您所说的问题无关,但我希望您能接受建议 -
啊,好建议。干杯!
标签: perl mojolicious