我正在使用Mojolicious Lite创建一个json网络服务。
默认情况下,Mojolicious为服务器错误或找不到错误返回HTML响应。
是否可以将其覆盖为自定义JSON响应?
答案 0 :(得分:1)
Rendering guide讨论了如何自定义这些响应。
答案 1 :(得分:1)
有两种方法:
使用json
作为应用程序的默认格式,并使用not_found.*.json.ep
模板
use Mojolicious::Lite;
app->renderer->default_format('json');
app->start;
__DATA__
@@ not_found.development.json.ep
{"not":"found","code":404,"data":{"key1":"value1","key2":[42,19,"value3"]}}
使用before_render
钩子覆盖json负载。
use Mojolicious::Lite;
hook before_render => sub {
my ($c,$args) = @_;
if ($args->{template} && $args->{template} eq 'not_found') {
$args->{json} = { "too bad" => "so sad" };
}
};
app->start;