Java Rest API на Vert.x - PullRequest
       11

Java Rest API на Vert.x

0 голосов
/ 28 мая 2018

Я занимаюсь разработкой службы API REST на основе Java и Eclipse Vert.x Framework.Я не использовал Vert.x ранее, и я столкнулся с такой архитектурной проблемой.Когда мне нужно реализовать API для нескольких ресурсов REST (например, users и products), я должен создать отдельные вершины для каждого ресурса?

Например, когда я реализовал некоторый REST API с использованием Джерси, я создал отдельные классы ресурсов (для нашего примера это могли быть UsersResource и ProductsResource классы).В каждом классе я реализовал разрешенные действия (например, операции CRUD) и сопоставил их с методами REST (такими как GET, POST и т. Д.).Но должен ли я реализовать это аналогичным образом, когда я работаю с Vert.x (создайте UsersVerticle и ProductsVerticle), или у него есть какой-то другой идеологический подход?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я рекомендую создать один RestAPIVerticle и использовать Router в этом Verticle для настройки маршрутов.Тем не менее, вы можете модулировать свои маршруты, создавая вместе классы и маршруты маршрутов для конкретных задач.Но всегда используйте выделенный Маршрутизатор / Маршруты для своей RestAPIVerticle.

Совместное использование маршрутов или обработчиков между несколькими Vericies является плохой идеей, потому что это нарушает модель безопасности потока Vert.x.Большинство обработчиков не являются (и не должны быть) потокобезопасными, и, таким образом, вы можете столкнуться с проблемами при совместном использовании маршрутов или обработчиков между статьями.

Если вам нужно обрабатывать больше запросов, вы можете легко развернуть другой экземпляр вашей статьи.

Я использую процесс, описанный для Gentics Mesh, который использует Vert.x для предоставления REST API.Я суммировал рабочий процесс здесь: https://getmesh.io/docs/beta/contributing.html#_big_picture

Источники также есть на Github.

Другой вариант - это, конечно, генерировать вашу реализацию из спецификации REST (Контрактно-ориентированное проектирование).Я думаю, что есть статья в блоге Vert.x, которая описывает этот процесс.

0 голосов
/ 29 мая 2018

Ответ, это зависит.Как правило, Маршрутизатор / веб-сервер будет представлять собой одну вертикаль, а код реализации будет находиться в одной или нескольких других вершинах.Лучшим подходом является использование возможности Service Proxy.Это позволит вам более четко определить ваш API без большого количества ручного подключения конечных точек шины событий.Посмотрите на https://github.com/rhoar-shootout/rhoar-vertx, чтобы увидеть хороший пример.

РЕДАКТИРОВАТЬ - Ситуация изменилась и изменилась

Теперь есть лучшие инструменты для использования служебных прокси с Vert.x Router.Я бы порекомендовал использовать новую OpenAPI3RouterFactory вместе с файлом спецификации OpenAPI .В сочетании с инструментом vertx-starter вы можете сгенерировать служебные прокси и код OpenAPI3Router из файла спецификации.

...