Как изменить ошибку по умолчанию Mojolicious Lite, не найденную на пользовательский ответ json

Я создаю веб-сервис json, используя Mojolicious Lite.

По умолчанию Mojolicious возвращает HTML-ответ в случае ошибки сервера или не найденной ошибки.

Есть ли способ перезаписать это в пользовательский ответ JSON?


person Franco    schedule 06.03.2019    source источник


Ответы (2)


Вот два подхода:

  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"]}}
    
  2. Переопределить полезную нагрузку json с помощью хука 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;
    
person mob    schedule 07.03.2019

О том, как настроить эти ответы.

person Grinnz    schedule 07.03.2019