Как вернуть XML с Dancer2 :: Plugin :: REST? - PullRequest
4 голосов
/ 29 сентября 2019

Я успешно использую Dancer2 :: Plugin :: REST для возврата JSON с моего веб-сервера, когда пользователи получают доступ к mydomain.com/api/1.json. Пока сохраняется эта функция, как я могу использовать Dancer2 :: Plugin2 ::REST для возврата XML, когда пользователи получают доступ к mydomain.com/api/1.xml?

Мой config.yml содержит этот раздел:

serializers:
  json: JSON
  yml:  YAML
  yaml: YAML
  dump: Dumper
  xml:  XML

Мой lib / MyApp / API.pm выглядит так:

package MyApp::API;

use Dancer2;

use Dancer2::Plugin::REST;
prepare_serializer_for_format;

get '/1.:format' => sub {
    return { 'temperature' => '10', 'date' => '2019-09-01' };
};

true;

Как и ожидалось, я получаю правильныйФрагмент JSON при запуске:

curl -H 'Accept-Type: text/json' https://<mydomain>/api/1.json

Но при запуске:

curl -H 'Accept-Type: text/xml' https://<mydomain>/api/1.xml

или

curl -H 'Accept-Type: application/xml' https://<mydomain>/api/1.xml

или

curl https://<mydomain>/api/1.xml

Я получаюошибка сервера в ответе:

Internal Server Error

Reference {"exception" => "Reference {\"date\" => \"2019-09-01\",\"tem...} did not pass type constraint "Str" (in $self->{"content"}) at /usr/local/share/perl/5.26.1/Dancer2/Core/Response.pm line 122
    "Str" is a subtype of "Value"
    Reference {"exception" => "Reference {\"date\" => \"2019-09-01\",\"tem...} did not pass type constraint "Value" (in $self->{"content"})
    "Value" is defined as: (defined($_) and not ref($_))

Я ожидал получить ответ XML, а не ошибку сервера.Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...