Я успешно использую 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, а не ошибку сервера.Чего мне не хватает?