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

Давайте создадим Java-приложение Spring boot и React с полным стеком: Серверный REST API / 2

Приложение Java FullStack Spring boot & React : Серверный Rest Api

Автор оригинала: Koffi KOMLAN.

Здравствуйте, В предыдущем уроке мы создали проект Easytrans. В этом мы углубимся в api REST.

Мы научимся, как:

  • Создание сущности
  • Создайте репозиторий и предоставьте его в качестве конечных точек REST без использования какого-либо другого компонента контроллера
  • Создание запросов
  • URL-адрес пользовательского запроса
  • Пользовательский базовый путь REST API

Создание сущности и репозитория

Создайте пакет с именем: модель и создайте класс: Маршрут.java , как показано ниже:

package com.codeurinfo.easytransapi.model; import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; 

public class Route { 
private Long id; 
private String name; 
private String start; 
private String terminus; 
public Route() {} 
public Route(String name, String start, String terminus) { 
this.name = name; 
this.start = start; 
this.terminus = terminus;
  }

}

Такой простой урок, как этот.

@Entity аннотация должна сообщить базе данных, что этот класс будет сущностью, тогда как @Table используется для указания пользовательского имени соответствующей таблицы в БД. Вы можете посетить этот блог для получения дополнительной информации об этих двух аннотациях. Мы добавляем ограничение @Столбец (уникальный), чтобы избежать дублирования имен.

Далее мы собираемся создать репозиторий, поэтому создайте пакет с именем: репозиторий , в котором вы создадите класс: RouteRepository.java :

package com.codeurinfo.easytransapi.repository; import com.codeurinfo.easytransapi.model.Route;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; 

@RepositoryRestResource
public interface RouteRepository extends JpaRepository { Optional findRoutesByName(@Param("name") String name);
}
  • Мы используем @RepositoryRestResource вместо @Repository , потому что он напрямую предоставляет интерфейс репозитория в качестве конечной точки REST, поэтому не было бы необходимости в другом контроллере REST, как в нашем случае.

Теперь наш серверный REST API готов! Давайте проверим это с помощью Почтальона.

  1. Запустите основной класс ( EasytransApiApplication.java в нашем случае)
  2. Добрался до почтальона и сделал запрос http GET по этому URL: локальный хост:9000/маршруты
локальный хост:9000/маршруты

В результате вы заметите, что массив routes пуст, это верно, потому что у нас нет сохраненных записей; кроме того, Spring Data Rest генерирует полезные ссылки через объект “_links”. Позже мы будем использовать ” localhost:9000/маршруты/поиск ” для различные поисковые запросы

3 . В почтальоне снова давайте сделаем запрос Http POST по этому URL: localhost:9000/маршруты На вкладке “Тело” выберите raw и JSON, затем пройдите мимо тела ниже:

{ 
  "name": "Rex-Adetikope", 
    "start": "Grand marche - Rex", 
    "terminus": "Adetikope"
}

Нажмите Отправить , чтобы сохранить данные.

Нажмите || Отправить||, чтобы сохранить данные.

4 . Давайте попробуем наш предыдущий запрос GET против: localhost:9000/маршруты Теперь массив маршрутов содержит сохраненные данные.

Теперь массив маршрутов содержит сохраненные данные.

5 . Теперь, когда наш REST API позволяет нам перечислять маршруты и сохранять некоторые объекты маршрута, давайте сделаем поисковые запросы.

  • Найдите конкретный маршрут, указав его название в запросе GET:
http://localhost:9000/routes/search/findRoutesByName?name=Rex-Adetikope
  • Обратите внимание, что после URL-адреса поиска, предоставленного Spring Data Rest , мы добавляем подпись метода запроса ( поиск маршрутов по имени ), за которой следует атрибут, указанный в @Param , который здесь имя .
Обратите внимание, что после URL-адреса поиска, предоставленного Spring Data Rest , мы добавляем подпись метода запроса ( || поиск маршрутов по имени||), за которой следует атрибут, указанный в || @Param||, который здесь || имя || .

Настройка URL-адреса поиска

Вместо использования найти маршруты по имени в URL-адресе поиска давайте использовать более короткое имя: маршруты по имени .

Для этого перейдите в интерфейс репозитория и добавьте аннотацию @RestResource (путь) , наш интерфейс должен выглядеть так:

package com.codeurinfo.easytransapi.repository; import com.codeurinfo.easytransapi.model.Route;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.data.rest.core.annotation.RestResource; 

@RepositoryRestResource
public interface RouteRepository extends JpaRepository { 
@RestResource(path = "routesByName") Optional findRoutesByName(@Param("name") String name);
}

Сохраните и сделайте запрос GET по этому URL-адресу:

http://localhost:9000/routes/search/routesByName?name=Rex-Adetikope

Как вы можете видеть, мы получили ожидаемый результат, используя маршруты По Названию вместо найдите маршруты по Названию

|||| вместо || найдите маршруты по Названию || .

Настройка базового пути

В реальном проекте большинство корневых путей REST API начинаются с домена/api/путь к ресурсам, но, как вы можете видеть, мы напрямую называем путь к ресурсам после имени домена.

Чтобы добавить/api перед любым путем к ресурсу, откройте приложение.файл yml и добавьте ключ базового пути spring, и его значение будет таким:

spring: 
  data: 
    rest: 
      base-path: /api

Сохраните файл yml, попробуйте выполнить один из предыдущих запросов GET, вы заметите ошибку 404 “ресурс не найден”.

Сохраните файл yml, попробуйте выполнить один из предыдущих запросов GET, вы заметите ошибку 404

Это потому, что с этого момента наш REST API будет использоваться с использованием базового пути/api/перед любым другим ресурсным путем. Итак: локальный хост:9000/маршруты -> локальный хост:9000/api/маршруты и т.д.

Вот так ! Поздравляем, вы создали базовый Java Spring Boot REST API, надеюсь, вы узнали что-то новое. Если это так, не забудьте нажать кнопку “Мне нравится” и подписаться на этот блог, чтобы получать уведомления о новых публикациях.

В следующей статье мы добавим новые функции в наше приложение Easy Trans. Спасибо вам за участие в этом путешествии разработчика Java и React с полным стеком!

Оригинал: “https://www.codementor.io/@koffikomlan/let-s-build-java-full-stack-spring-boot-react-app-backend-rest-api-2-1k43mx2wzs”