Я пишу модуль обертки Perl вокруг веб-сервиса REST, и я надеюсь иметь некоторый совет относительно того, как лучше всего спроектировать модуль.
Я смотрел на несколько различных модулей Perl для вдохновения.
Flickr::Simple2
в основном один большой файл с методами, переносящими различные методы в API Flickr, например. getPhotos()
и т.д.
Flickr::API
подкласс другого модуля (LWP) для того, чтобы сделать Запросы HTTP. Так в основном это просто позволяет Вам выполнять вызовы через модуль, с помощью LWP, которые переходят к корректному МЕТОДУ/URL API, не определяя методов обертки самому. Это объяснило довольно плохо - но в основном это имеет метод, который берет аргумент (имя метода API) и создает корректный вызов API, например. request()
/response()
.
Альтернативный дизайн был бы похож на описанное первое, но менее монолитное с отдельными классами для отдельных "областей" API.
Я хотел бы следовать современным методам Perl / методам Perl лучшей практики, таким образом, я использую Dist::Zilla
создавать модуль и Moose
для материала OO, но я ценил бы некоторый вход о том, как на самом деле разрабатывать/проектировать мою обертку.
Руководства/учебные руководства или указатели на другие хорошо разработанные модули ценились бы.
Удачи
Это в некоторой степени зависит от широты / глубины API, который вы пытаетесь обернуть.
Если у него всего несколько простых вызовов API, первый подход подойдет.
Если у него есть ОЧЕНЬ сложные API-интерфейсы, которые имеют "простой" режим, который вы хотите предоставить пользователю, один из шаблонов состоит в том, чтобы иметь основной модуль и подклассифицировать его как Main :: Module :: Simple, который будет обертывать основной базовый модуль. .
Как вы заметили, очень широкий API может выиграть от разделения на области с параллельными классами (возможно, унаследованными от базового класса или использующими его), отвечающими за обертку каждой области. Просто не забудьте учесть все общие вещи, чтобы избежать дублирования кода / дизайна.
У Джошуа Блоха есть хорошие советы по теме « Как создать хороший API и почему это важно » (видео, 2007).
Слайды (PDF) .