Как заменить ошибку по умолчанию Mojolicious Lite, не найденную, на пользовательский ответ json - PullRequest
2 голосов
/ 07 марта 2019

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

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

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

Ответы [ 2 ]

1 голос
/ 07 марта 2019

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

  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 hook.

    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;
    
0 голосов
/ 07 марта 2019

В руководстве по визуализации обсуждается, как настроить эти ответы.

...