В настоящее время я пытаюсь разработать REST API с использованием Erlang.Я использовал OpenAPI (Swagger) для определения API и хотел использовать их openapi-generator для создания заглушек и некоторого вспомогательного кода.Это также работает, и генерируется некоторый код, но я не могу найти никакой документации о том, что я должен делать оттуда.
Для объяснения моей проблемы я буду ссылаться на их пример вывода из генерации кодадля erlang-server .
На данный момент у меня есть две основные проблемы:
- Я не могу найти точку входа в код (например,
init/0
или start/0
function) - Я не уверен, какую функцию я должен реализовать для выполнения моего кода на каждой конечной точке.Я думаю, что мне нужно реализовать
handle_request
, но путь выполнения кажется мне немного странным.
Какую функцию реализовать
В openapi_router ониопределите openapi_pet_handler
как обработчик для 'AddPet'
.В этого модуля имеется функция с именем handle_request_json
, которая пытается заполнить запрос и в случае OK выполняет openapi_logic_handler:handle_request(LogicHandler, ...)
.
openapi_logic_handler:handle_request(Handler, ...)
берет этот обработчик и выполняет Handler:handle_request(OperationID, Req, Context).
.Это приводит меня к выводу, что мне, вероятно, придется реализовать openapi_pet_handler:handle_request
с моим пользовательским кодом.
Как запустить сервер
Я проверил код, и он, кажется, использует cowboy
в качестве веб-сервера.По крайней мере, он включает в себя зависимости до cowboy
в сгенерированном openapi.app.src
.Однако в rebar.config
нет ссылки на ковбоя.
В уроке по ковбою они используют erlang.mk для создания своего проекта.Это позволяет им запускать код с make run
.С арматурой это не представляется возможным.Я не нашел конкретной команды для арматуры для запуска программы.Похоже, вам нужно знать точку входа (функцию init), если вы используете rebar.
Однако я не могу найти ни одной функции, которая выглядит так, как будто это функция init в сгенерированном коде заглушки.
Резюме
Может кто-нибудь объяснить, что нужно сделать, чтобы использовать заглушку, сгенерированную openapi-generator для erlang-server?Должен ли я настроить свой собственный ковбойский проект и затем каким-то образом связать в него заглушки?Если да, то как?