Я создаю веб-сервис json, используя Mojolicious Lite.
По умолчанию Mojolicious возвращает HTML-ответ для ошибки сервера или не найдена.
Есть ли способ перезаписать это в пользовательский ответ JSON?
Вот два подхода:
Используйте json в качестве формата приложения по умолчанию и используйте not_found.*.json.ep шаблон
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"]}}
Переопределить полезную нагрузку json с помощью before_render hook.
before_render
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;
В руководстве по визуализации обсуждается, как настроить эти ответы.