Какие модули Perl подходят для написания клиента веб-API RESTful?

Я собираюсь написать приложение, которое выполняет небольшие вычисления с данными, полученными от веб-службы RESTful, и выводит их в текстовый файл и/или HTML-страницу. Веб-служба представляет собой XML через HTTP. Я сделал простое доказательство концепции с помощью LWP::Simple и XML::Simple, но все это немного специально.

Может ли кто-нибудь порекомендовать некоторые модули Perl или лучшие практики для взаимодействия с веб-сервисами RESTful таким образом? Есть ли один модуль, который позаботится обо всех деталях для меня (создание запроса + обработка ответа), или проблемная область слишком общая для этого?

Обратите внимание, что веб-служба представляет собой XML через HTTP, хотя я ожидаю, что в конечном итоге мне придется использовать HTTP GET, POST и HEAD. Я думаю, что у меня есть возможность запрашивать JSON вместо XML, если это упрощает работу.

Заранее спасибо.


person Anon Gordon    schedule 22.03.2009    source источник


Ответы (3)


Почти все я делаю либо с LWP::Simple, LWP::UserAgent, Mojo::UserAgent или WWW::Mechanize . Материал REST просто выбирает правильный URL-адрес для отправки запроса. Как только вы получите ответ, на CPAN появится множество модулей для обработки XML или JSON. Мне особенно нравится Mojo, так как он поставляется с собственными парсерами и инструментами JSON и DOM.

person brian d foy    schedule 22.03.2009

REST::Client — это хорошо. У Atlassian есть Написание REST-клиента на Perl статья.

person Phluks    schedule 02.05.2011

Лучше всего использовать REST:: Client. Или для непроизводственного использования вы можете использовать curl (команда unix) в Perl. например:

    #!/usr/bin/perl
    $\="\n";
    $s=`curl -s --request GET --url https://api.thedogapi.com/v1/images/search`;
    print $s;
person Arun Tom    schedule 15.10.2018
comment
В этом отношении вы можете использовать PHP или что-то еще внутри Perl. Это действительно не дает ответа на вопрос и предлагает очень грязное решение. - person Francisco Zarabozo; 03.11.2018
comment
Вот почему я сказал, модуль REST::Client. решение для завивки предназначено только для обходного/грязного решения. - person Arun Tom; 27.06.2019