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

Создание ОТДЫХА с помощью CRNK

Примечание: Эта статья была написана и предполагается опубликовать, микросервисы зимы 2018 года – это больше, чем просто связь… С тегами crank, spring, java.

Примечание: Эта статья была написана и предположительно опубликована зимой 2018 года

Микросервисы в наши дни более чем распространены, и в Travelex мы используем их в различных областях бизнеса. Для многих сервисов мы используем Spring framework, чтобы упростить быстрый запуск сервиса. Поскольку все микросервисы взаимодействуют друг с другом, мы приняли стандарт JSON:API. Библиотека, основанная на стандарте JSON:API, является библиотекой CRANK.

Crank – это собственная библиотека rest, ориентированная на ресурсы, где ресурсы, их взаимосвязи и хранилища являются основными строительными блоками.

Объединив кривошипно-шатунный и пружинный каркас, мы быстро запустили и запустили сервисы. Spring Boot создает работоспособную службу, а CRANK помогает обрабатывать взаимодействие с API-интерфейсами REST. В этой и следующей статьях будет рассказано о том, как настроить службу с помощью CRANK. Мы рассмотрим более общее представление о том, что такое CRANK, а позже мы поговорим о некоторых проблемах, с которыми мы столкнулись, когда хотели сделать что-то более продвинутое с CRNK.

КРНК

Минимальное требование для использования этой библиотеки – JAVA 8. Мы рассмотрим только gradle и maven для этой настройки. Для maven вы добавляете в свой pom.xml следующие пакеты:


  io.crnk
  crnk-setup-spring-boot2
  ${crnk.version}


   io.crnk
   crnk-client
   ${crnk.version}


   io.crnk
   crnk-validation
   ${crnk.version}


   io.crnk
   crnk-security
   ${crnk.version}


   io.crnk
   crnk-jpa
   ${crnk.version}


   io.crnk
   crnk-monitor-brave4
   ${crnk.version}

И для gradle вы строите.gradle выглядит следующим образом:

compile project(':crnk-setup:crnk-setup-spring-boot2')
compile project(':crnk-jpa')
compile project(':crnk-validation')
compile project(':crnk-home')
compile project(':crnk-ui')
compile project(':crnk-operations')
compile project(':crnk-security')
compile project(':crnk-data:crnk-data-facet')

При любом из этого проект готов к использованию CRANK. А пользоваться КРИВОШИПОМ довольно просто. Как минимум, ему нужна только аннотация к классу модели и репозиторий, связанный с этим классом модели. Хранилище будет обрабатывать данные для указанной модели. Он может либо хранить его сам по себе в виде хэш-карты, либо хранить данные в структуре данных, например в базе данных.

Модель и данные

Модель – это представление данных, имеющихся в приложении. Данные должны храниться в хранилище, которое либо хранит данные в памяти, либо может быть подключено к базе данных.

// Copyright (c) 2018 Travelex Ltd
package com.travelex.store.model;
import io.crnk.jpa.annotations.JpaResource;
import lombok.Data;
import javax.persistence.Entity;
@Data
@JpaResource(type = "person")
@Entity
public class Person {
  private String name;
  private int age;
}

В приведенном выше примере ресурс Jpa будет внешним подключением к этому ресурсу при выполнении запроса POST, PUT или GET. Объект аннотации свяжет нас напрямую с базой данных, которая является нашей базовой структурой для хранения данных. Нам не нужно создавать класс репозитория, если мы настраиваемся с использованием сущности.

Ломбок

Пакет Lombok – это то, что мы используем во всех наших сервисах, что значительно помогает нам сократить код. Способ работы ломбока заключается в создании кода для нашего класса таким образом, нам не нужно писать о геттерах и сеттерах и всех тех методах, которые должен иметь класс. Аннотация данных объединяет различные аннотации для создания геттеров, сеттеров, строк, конструкторов и т. Д. Поэтому нам нужно только определить атрибуты нашей модели.

Хранилище

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

Ресурс, которым является модель, необходимо подключить к своим данным. Обычно это делается с помощью репозитория. Хранилище будет либо хранить данные в памяти в виде хэш-карты, либо может быть подключено к структуре данных, например базе данных. Обычный репозиторий может выглядеть так:

// Copyright (c) 2018 Travelex Ltd
package com.travelex.store.model;
import io.crnk.core.queryspec.QuerySpec;
import io.crnk.core.repository.ResourceRepositoryBase;
import io.crnk.core.resource.list.ResourceList;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class PersonRepository extends ResourceRepositoryBase {
  private Map list = new HashMap<>();
  public PersonRepository() {
    super(Person.class);
  }

  @Override
  public void delete(int age) {
    list.remove(age);
  }

  @Override
  public  S save(S person) {
    list.put(person.getAge(), person.getName());
  }

  @Override
  public ResourceList findAll(QuerySpec querySpec) {
    return querySpec.apply(list.values());
  }
  ...
}

Фильтрация и CRNK

Ресурс Jpa предоставляет нам функции CRNK для запроса данных. Параметры по умолчанию – фильтрация и сортировка ресурсов. С помощью фильтрации вы можете иметь: эквалайзер для равных значений, НАПРИМЕР для шаблонов, LT для меньшего, LE для меньшего и равного, GT для большего и GE для большего и равного. Типичный вызов фильтра

/person?filter[EQ][age]=25

будет просматривать базу данных для каждого объекта, где данные по возрасту равны 25.

Вы можете добавить свой собственный оператор фильтра, если вы правильно обрабатываете запрос в репозитории. Это означает, что операторы фильтрации работают как с запросом, поступающим на ваш сервер, так и с запросом запроса к базе данных. С этим мы разберемся позже.

Резюме

С помощью библиотеки CRNK вы можете создавать API-интерфейсы REST с минимальными усилиями. Это помогает создать REST API для службы, и единственное, о чем нам нужно беспокоиться, – это данные, которые нам нужны для обработки указанной службы. Если вы используете платформу Spring framework, как мы это делали с нашим тестовым сервисом здесь, как минимум, вам потребуется менее 5 классов: основной класс, который запускает приложение SpringBoot, класс модели, который представляет наши данные, и класс конфигурации, который подключается к базе данных.

CRANK хорош для создания простых служб API REST, которые могут хранить данные. Он прост в использовании с Spring Boot, и нам, разработчикам, не нужно сосредотачиваться на коде для подключения к нашему сервису. Но, как и в случае с тем, что CRANK легко подключается к Spring Boot и настраивает службу, если вам нужно настроить что-то, что не является стандартным в CRNK, потребуется обойти это.

Оригинал: “https://dev.to/nchrisz/creating-rest-with-crnk-3a6m”