1. Обзор
В этом уроке мы обсудим что такое HAL и почему он полезен, прежде чем представить браузер HAL .
Затем мы будем использовать Spring для создания простого REST API с несколькими интересными конечными точками и заполнения нашей базы данных некоторыми тестовыми данными.
Наконец, используя браузер HAL, мы изучим наш REST API и узнаем, как просматривать данные, содержащиеся в нем.
2. HAL и браузер HAL
Язык гипертекстовых приложений JSON , или HAL, – это простой формат, который обеспечивает последовательный и простой способ гиперссылки между ресурсами в нашем API . Включение ПОЛОВИНЫ в наш REST API делает его гораздо более понятным для пользователей, а также по существу самодокументированным.
Он работает, возвращая данные в формате JSON, в котором содержится соответствующая информация об API.
Модель HAL вращается вокруг двух простых концепций.
Ресурсы, которые содержат:
- Ссылки на соответствующие URL-адреса
- Встроенные ресурсы
- Государство
Связи:
- Целевой URI
- Отношение или отношение к ссылке
- Несколько других дополнительных свойств, которые помогут с амортизацией, согласованием содержимого и т. Д
Браузер HAL был создан тем же человеком, который разработал HAL, и предоставляет графический интерфейс в браузере для просмотра вашего REST API .
Теперь мы создадим простой REST API, подключим браузер HAL и изучим его функции.
3. Зависимости
Ниже приведена единственная зависимость, необходимая для интеграции браузера HAL в наш REST API. Вы можете найти остальные зависимости для API в коде GitHub .
Во-первых, зависимость для проектов на основе Maven:
org.springframework.data spring-data-rest-hal-explorer 3.4.1.RELEASE
Если вы строите с помощью Gradle, вы можете добавить эту строку в файл build.gradle :
compile group: 'org.springframework.data', name: 'spring-data-rest-hal-explorer', version: '3.4.1.RELEASE'
4. Создание простого REST API
4.1. Простая модель данных
В нашем примере мы настроим простой REST API для просмотра различных книг в нашей библиотеке.
Здесь мы определяем простую сущность книги, которая содержит соответствующие аннотации, чтобы мы могли сохранять данные в режиме гибернации:
@Entity public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @NotNull @Column(columnDefinition = "VARCHAR", length = 100) private String title; @NotNull @Column(columnDefinition = "VARCHAR", length = 100) private String author; @Column(columnDefinition = "VARCHAR", length = 1000) private String blurb; private int pages; // usual getters, setters and constructors }
4.2. Внедрение репозитория CRUD
Затем нам понадобятся некоторые конечные точки. Для этого мы можем использовать PagingAndSortingRepository | и указать, что мы хотим получить данные из нашей Книги сущности.
Этот класс предоставляет простые команды CRUD, а также возможности подкачки и сортировки прямо из коробки:
@Repository public interface BookRepository extends PagingAndSortingRepository{ @RestResource(rel = "title-contains", path="title-contains") Page findByTitleContaining(@Param("query") String query, Pageable page); @RestResource(rel = "author-contains", path="author-contains", exported = false) Page findByAuthorContaining(@Param("query") String query, Pageable page); }
Если это выглядит немного странно, или если вы хотите узнать больше о репозиториях Spring, вы можете прочитать больше здесь .
Мы расширили репозиторий, добавив две новые конечные точки:
- findByTitleContaining – возвращает книги, содержащие запрос, включенный в заголовок
- findByAuthorContaining – возвращает книги из базы данных, в которой автор книги содержит запрос
Обратите внимание, что наша вторая конечная точка содержит атрибут export //. Этот атрибут останавливает создание ПОЛУ-ссылок для этой конечной точки и не будет доступен через браузер HAL.
Наконец, мы загрузим наши данные при запуске Spring, определив класс, реализующий интерфейс Application Runner . Вы можете найти код на GitHub .
5. Установка браузера HAL
Настройка браузера HAL удивительно проста при создании REST API с помощью Spring. Пока у нас есть зависимость, Spring автоматически настроит браузер и сделает его доступным через конечную точку по умолчанию.
Все, что нам нужно сделать сейчас, это нажать кнопку Выполнить и переключиться на браузер. Затем браузер HAL будет доступен на http://localhost:8080/
6. Изучение нашего REST API С помощью браузера HAL
Браузер HAL разбит на две части – проводник и инспектор . Мы разберем и исследуем каждый раздел отдельно.
6.1. Исследователь HAL
Как это звучит, проводник посвящен изучению новых частей нашего API относительно текущей конечной точки . Он содержит строку поиска, а также текстовые поля для отображения Заголовков пользовательских запросов и свойств текущей конечной точки.
Под ними у нас есть раздел ссылок и кликабельный список встроенных ресурсов.
6.2. Использование ссылок
Если мы перейдем к нашей конечной точке /books , мы сможем просмотреть существующие ссылки: