Рубрики
Без рубрики

Как настроить REST API с помощью Quarks.io

Минимальное руководство по созданию REST API с использованием Quarks.io . Помеченные кварками, явой, брайлизандевсом, джакартой.

Quarks – один из лучших фреймворков для Java! Во-первых, была Wildfly, которая в качестве эксперимента стала проектом, ориентированным на микросервисы, под названием Wildfly Swarm. Затем Рой диких мух был переименован в Колючий Хвост. Основной целью Thorntail было создание сборки реализации Jakarta EE для микросервисов. Но был какой-то подводный камень, который требовал полного переписывания кода. Итак, это Quarkus, легкая реализация, готовая для микросервисов и имеющая встроенную поддержку GraalVM.

Таким образом, Quarks основан на уроках, извлеченных из предыдущей разработки. Основываясь на этих уроках, я считаю, что это будет лучшая платформа, простая в использовании и быстрая в исполнении.

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

Не заменяйте Maven Позвольте Maven (или Gradle) обрабатывать всю полноту извлечения зависимостей. Мы не можем предсказать топологию чьих-либо менеджеров репозиториев, прокси-серверов и сети.

Не усложняйте с уберджаром Чем сложнее наш макет uberjar, тем сложнее поддерживать Gradle или другие системы сборки, отличные от Maven.

Пути к классам сложны Если для выполнения из Maven, IDE, модульного теста и во время производства требуются разные пути к коду, у вас будут плохие времена.

Не настаивайте на уберджаре Для контейнеров Linux людям нужны слои, которые четко отделяют код приложения от кода поддержки во время выполнения.

Тестируемость важна Медленный тест – это тест, который никогда не выполняется добровольно. Проверка PR занимает целую вечность. Пользователям нравится иметь возможность быстро и итеративно тестировать свой собственный код.

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

Связанный: Основные вещи не должны быть более первоклассными, чем вклад сообщества Например, автоматическое обнаружение в WildFly Swarm работало только с основными фракциями; предоставленный пользователем не будет автоматически обнаруживаться.

Убедитесь, что гарантии публичного и частного API понятны. Переплетающийся код (и javadocs) затрудняют нахождение границы между общедоступным API и частными реализациями.

Разрешить компоненты BYO Мы не хотим определять все реализации и, конечно же, не версии случайных компонентов, которые мы поддерживаем.

Быть фреймворком, а не платформой Фреймворки легче интегрировать в существующее приложение; платформа становится целью с (как правило, слишком большим количеством) ограничений.

Ведение тестов и документации Убедитесь, что определение “сделано” включает как тесты, так и документацию.

Сложность производства Чем больше расхождение между сообществом и продуктом, тем больше усилий требуется для продуктизации. Усложнение любого процесса для автоматизации производства из сообщества.

Сложность спецификации Это также связано с производительностью, но само по себе наличие нескольких бомб сделало жизнь запутанной для нас и для пользователей. Часто бывали случаи, когда фракции были “Нестабильными” или “Экспериментальными” в течение нескольких месяцев без какой-либо реальной причины, кроме того, что мы забыли их обновить.

Первый вопрос, на который нам нужно ответить в учебном пособии, таков: Чтобы создать проект с использованием Quartus, что вам нужно?

Для кварков нам нужно:

  1. Добавьте зависимости
  2. Настройте пакет
  3. Начало кодирования

1. Настройте зависимости

Поскольку Quarks – это Jakarta EE, мы будем использовать аннотации Jakarta EE в коде. Но, для pom.xml мы должны указать на зависимости Quarkus, потому что quarkus имеет встроенную поддержку GraalVM.

Сначала нам нужно добавить все зависимости к кваркам, это можно сделать с помощью dependencyManagement:


    
        
            io.quarkus
            quarkus-universe-bom
            1.9.2.Final
            pom
            import
        
    

Для этого проекта нам понадобится:

  1. Создать REST API
  2. Добавить поддержку JSON
  3. Добавить Реактивную Поддержку

Для этого нам понадобятся следующие зависимости:

  1. io.quarkus:io.quarks для создания REST API
  2. io.quarkus:quarkus-resteasy-json b для добавления сериализатора JSON в REST API
  3. io.quarkus:quarkus-resteasy-mutiny для добавления реактивной поддержки REST API

2. Настройка сборки

Следующим шагом мы должны настроить сборку кварков. Как мы знаем, Quarks создает fat jar со всеми зависимостями.

Чтобы включить Quarks builder в Maven, просто добавьте следующий плагин:


    io.quarkus
    quarkus-maven-plugin
    1.9.2.Final
    
        
            
                generate-code
                generate-code-tests
                build
            
        
    

В этом примере я компилируюсь как Java 11, но для тестирования использую Java 15. Он будет работать для любой версии Java новее 11. Если вам нужно выполнить его на Java 8, просто измените параметры компилятора.

Мы можем сделать сборку просто выполняющейся:

mvn clean package

Это создаст два jars внутри целевой папки, один из которых заканчивается -runner.jar может выполняться без каких-либо зависимостей.

$ java -jar target\quarkus-tutorial-runner.jar
__  ____  __  _____   ___  __ ____  ______
 --/ __ \/ / / / _ | / _ \/ //_/ / / / __/
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2020-11-09 11:16:53,416 INFO  [io.quarkus] (main) quarkus-tutorial 0.0.1-SNAPSHOT on JVM (powered by Quarkus 1.9.2.Final) started in 4.706s. Listening on: http://0.0.0.0:8080
2020-11-09 11:16:53,470 INFO  [io.quarkus] (main) Profile prod activated.
2020-11-09 11:16:53,475 INFO  [io.quarkus] (main) Installed features: [cdi, mutiny, resteasy, resteasy-jsonb, resteasy-mutiny, smallrye-context-propagation]
2020-11-09 11:16:58,790 INFO  [io.quarkus] (Shutdown thread) quarkus-tutorial stopped in 0.024s

Именно так мы должны работать в производственных средах, для разработки мы можем использовать плагин Quarks Maven. Он уже выполняет развертывание любых изменений на работающем сервере:

mvn quarkus:dev

3. Добавление конечной точки REST API

Последним шагом для создания API является создание кода, который будет обрабатывать запросы. Использовать JAX-RS очень просто, просто создайте класс и добавьте аннотации.

Самый простой пример – это:

@Path("/hello")
@ApplicationScoped
public class HelloEndpoint {
    @GET
    public String sayHello() {
        return "Hello World!";
    }
}

JAX-RS автоматически генерирует представление JSON для любого объекта, возвращаемого этим методом, вам просто нужно указать тип MIME.

@Path("/hello")
@ApplicationScoped
public class HelloEndpoint {
    private HelloResponse generateResponse() {
        HelloResponse response = new HelloResponse();
        response.setCode(new Random().nextInt());
        response.setMessage("Hello World!");
        return response;
    }

    @GET
    @Path("/json")
    @Produces(MediaType.APPLICATION_JSON)
    public HelloResponse sayHelloWithJson() {
        return generateResponse();
    }
}

Кварки также поддерживают реактивное программирование. Для JAX-RS вам нужно просто вернуть Уни или а Завершаемое будущее .

@Path("/hello")
@ApplicationScoped
public class HelloEndpoint {
    private HelloResponse generateResponse() {
        HelloResponse response = new HelloResponse();
        response.setCode(new Random().nextInt());
        response.setMessage("Hello World!");
        return response;
    }

    @GET
    @Path("/json/reactive")
    @Produces(MediaType.APPLICATION_JSON)
    public Uni sayHelloWithJsonReactively() {
        return Uni.createFrom().item(this::generateResponse);
    }
}

С помощью Quarks вы можете быстро создать REST API с помощью JAX-RS. Поскольку JAX-RS является спецификацией Jakarta EE, вы можете перенести свой код с небольшими изменениями в другую существующую реализацию, но Quarkus – более легкая реализация.

Кварки – хороший выбор!

Вы можете найти все примеры на github.com/vepo/quarkus-tutorial

vepo/quarkus-учебное пособие

Это серия постов в блоге, в которых я создам учебное пособие по Quakus.io .

Дополнительная информация

В первом примере мы создаем минимальный REST API с использованием Quarks и JAX-RS.

Дополнительная информация

Во втором примере мы добавляем уровень сохраняемости для нашего REST API.

Дополнительная информация

В третьем примере мы добавляем проверку ко всем уровням нашего REST API.

Оригинал: “https://dev.to/vepo/how-to-set-up-a-rest-api-using-quarkus-io-56m3”