Статьи

ОТДЫХ + MongoDB + HATEOAS?

ОТДЫХ?

Недавно у меня был интересный опыт внедрения HATEOAS в REST-веб-сервис, и мне также посчастливилось испытать базу данных NoSQL с именем MongoDB, которая мне показалась действительно удобной для множества различных случаев, когда вам не нужно управлять транзакциями. Итак, сегодня я собираюсь поделиться с вами этим опытом. Может быть, некоторые из вас узнают что-то новое, а может и нет, но тем не менее, вы получите повышение квалификации по тому, что вы уже знаете.

Итак, прежде всего, мы собираемся представить REST, и постепенно мы перейдем к HATEOAS и MongoDB. Итак, что же такое REST?

Как утверждает консорциум World Wide Web , REST — это:

 «… Модель для создания веб-сервисов [Fielding]. REST Web — это подмножество WWW (на основе HTTP), в котором агенты предоставляют унифицированную семантику интерфейса — по сути, создают, извлекают, обновляют и удаляют — вместо произвольные или специфичные для приложения интерфейсы и манипулировать ресурсами только путем обмена представлениями … »

Хорошо, теперь, когда мы знаем, что такое REST, я перечислю краткое описание всех ограничений, которые Рой Филдинг упомянул в пятой главе своей диссертации:

  • Клиент-сервер — реализуйте свой сервис таким образом, чтобы отделить интересы пользовательского интерфейса (клиент получает мобильность) от проблем хранения данных (сервер получает масштабируемость).
  • Без сохранения состояния — реализуйте связь между клиентом и сервером таким образом, чтобы при обработке запроса сервером никогда не использовалась какая-либо информация, хранящаяся в контексте сервера, и вся информация, относящаяся к сеансам, сохранялась на клиенте.
  • Кэш. Когда ответ на запрос может быть кэширован (неявно или явно), клиент должен получить кэшированный ответ.
  • Унифицированный интерфейс — все сервисы REST должны полагаться на одну и ту же унифицированную конструкцию между компонентами. Интерфейсы должны быть отделены от предоставляемых услуг.
  • Многоуровневая система — клиент никогда не знает, подключены ли они напрямую к серверу или к некоторым промежуточным серверам. Например, запрос может проходить через прокси-сервер, который имеет функцию балансировки нагрузки или общего кэша.

Модель зрелости Ричардсона

Рисунок 1 — Уровни модели зрелости Ричардсона

Как говорит Мартин Фаулер , эта модель является « моделью (разработанной Леонардом Ричардсоном), которая разбивает основные элементы подхода REST на три этапа. Они представляют ресурсы, глаголы HTTP и элементы управления гипермедиа».

Я собираюсь дать вам краткое описание этих уровней:

  • Болото POX. Существует только один ресурс и один метод запроса POST и единственный способ связи — XML.
  • Ресурсы. Мы придерживаемся метода POST, но получаем больше ресурсов, на которые мы можем обратиться.
  • HTTP-глаголы. Теперь для соответствующих случаев (ресурсов) мы используем другие методы HTTP, такие как GET или DELETE. Обычно здесь выполняются операции CRUD.
  • Элементы управления гипермедией — HATEOAS (гипертекст как движок состояния приложения), вы должны предоставить клиенту начальную ссылку для использования вашего сервиса, и после этого каждый ответ должен содержать гиперссылки на другие возможности вашего сервиса.

Теперь, когда мы знаем, что такое REST, и рассмотрели его модель зрелости, я кратко познакомлю вас с базой данных NoSQL, MongoDB, и после этого мы перейдем к демонстрации!

Почему HATEOAS?

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

Как насчет крупных услуг, которые будут расти? Многие люди скажут, что это нормально, если вы просто сделаете уровень 2. Почему? Потому что HATEOAS — одна из вещей, которые делают REST сложным; это трудно. Если вы действительно хотите получить его преимущества, вам нужно написать больше кода на клиенте — обрабатывать ошибки, как интерпретировать ресурсы, как анализируются предоставленные ссылки и на сервере — создавать исчерпывающие и полезные ссылки и т. Д. Давайте рассмотрим некоторые из преимуществ HATEOAS:

  • Удобство использования — разработчики клиентов могут эффективно использовать, изучать и изучать ваш сервис, следуя ссылкам, которые вы предоставляете. Также они могут представить скелет вашего проекта.
  • Масштабируемость — клиенты, которые следуют по предоставленным ссылкам, а не создают их, не зависят от изменений кода службы.
  • Гибкость — предоставление ссылок для старых и новых версий службы позволяет легко взаимодействовать со старыми версиями на основе клиентов и с новыми версиями.
  • Доступность — клиенты, которые полагаются на HATEOAS, никогда не должны беспокоиться о новых версиях или изменениях кода на сервере, таких как жестко закодированные.
  • Слабая связь — HATEOAS способствует слабой связи между клиентом и сервером, распределяя обязанности по созданию и предоставлению ссылок только на сервер.

NoSQL? MongoDB?

Итак, что такое базы данных NoSQL? Производные от имени «не-SQL» или «нереляционные», эти базы данных не используют языки запросов, подобные SQL, и их часто называют структурированным хранилищем. Эти базы данных существуют с 1960 года, но не были настолько популярны до сих пор, когда некоторые крупные компании, такие как Google и Facebook, начали использовать их. Наиболее известными преимуществами являются свобода от фиксированного набора столбцов, объединений и SQL-подобных языков запросов. 

Иногда имя NoSQL может относиться к «не только SQL», чтобы заверить вас, что они могут поддерживать SQL. В базах данных NoSQL используются структуры данных, такие как значения ключей, широкие столбцы, графики или документы, и они могут храниться в разных форматах, таких как JSON. 

MongoDB — это база данных NoSQL без схемы, которая ориентирована на документы, поэтому, как я уже говорил выше, она обеспечивает высокую производительность и хорошую масштабируемость и является кроссплатформенной. MongoDB зарекомендовал себя благодаря полной поддержке индекса, простой и понятной структуре сохраненных объектов в формате JSON, потрясающей поддержке запросов к динамическим документам, ненужному преобразованию объектов приложения в объекты базы данных и профессиональной поддержке MongoDB.

Время кодировать! Будьте готовы к MongoDB!

Хорошо, теперь мы готовы приступить к реальной сделке. Давайте создадим простой веб-сервис EmployeeManager, который мы будем использовать для демонстрации HATEOAS с подключением MongoDB.

Для начальной загрузки нашего приложения мы будем использовать Spring Initializr. Мы собираемся использовать Spring HATEOAS и Spring Data MongoDB в качестве зависимостей. Вы должны увидеть что-то вроде того, что я получил ниже на рисунке 2.

Рисунок 2 — Начальная загрузка приложения

Как только вы закончите, загрузите zip и импортируйте его как проект Maven в вашу любимую IDE.

Во-первых, давайте настроим наш . Чтобы получить соединение с MongoDB, вам нужно работать со следующими параметрами: application.properties


Файлы свойств