Skip to content

Instantly share code, notes, and snippets.

@ArseniySavin
Last active June 16, 2022 10:21
Show Gist options
  • Save ArseniySavin/821dadc5b088d95e8dfe0f6ea9aee078 to your computer and use it in GitHub Desktop.
Save ArseniySavin/821dadc5b088d95e8dfe0f6ea9aee078 to your computer and use it in GitHub Desktop.
Вопросы по REST API. Можно понять основные концепции протокола
  • Что такое REST?
  • REST — это архитектурный стиль для веб-разработки.
  • REST означает передачу состояния.
  • Архитектура REST предлагает рекомендации по передаче ресурсов между клиентам и сервером по сети.
  • Что такое REST API?

REST API или RESTful API — это веб-API, соответствующий стилю архитектуры REST.

  • Ограничения REST и преимущества.

Единый интерфейс :

  • Интерфейс между клиентом и сервером, обеспечивающий стандартизированное взаимодействие клиент-сервер на JSON.
  • Необходимо для разделения клиента и сервера

Клиент-сервер :

  • Модель клиент-сервер для разделения задач между клиентом и сервером.
  • Позволяет клиенту и серверу работать и развиваться независимо
  • Поддерживает переносимость и масштабируемость

Stateless :

  • Протокол связи без сохранения состояния, при котором сервер не хранит информацию о состояниях сеанса.
  • Повышает производительность за счет снижения нагрузки на сервер

Кэшируемый :

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

Многоуровневая система :

  • Уровни между клиентом и сервером могут состоять из посредников, таких как прокси-серверы или балансировщики нагрузки.
  • Слои имеют отдельные обязанности, но могут взаимодействовать друг с другом
  • Поддерживает масштабируемость и безопасность системы
  • Четыре необходимых ограничения для достижения единого интерфейса:
  • идентификация ресурсов по URI или URL: Запросы должны идентифицировать ресурсы с использованием унифицированных идентификаторов ресурсов.
  • Манипулирование ресурсами через URL : Клиент получает ответ с сервера и владеет все необходимое для изменения состояния ресурса.
  • Само описательные сообщения : сообщения содержат всю информацию, необходимую получателю для ее интерпретации, включая метаданные.
  • Гипермедиа как механизм состояния приложения : гипермедиа (например, HTML) — это для взаимодействия клиент-сервер, и клиенту не требуется документация по конкретному API для понимания ответов сервера. Сюда скорее можно отнести Swagger.
  • Что такое идемпотентность?

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

  • Что такое CRUD?

CRUD — это аббревиатура основных операций, используемых в системе управления реляционными базами данных (RDBMS).

Операции CRUD соотносятся с методами HTTP:

  • POST - Создать
  • GET - Читать
  • PUT - Обновление
  • DELETE - Удалить
  • Расказать детальнее о методах HTTP.

Не идемпотентные:

  • POST - создание нового ресурса по указанному сервером URL-адресу
  • PATCH - изменить часть ресурса на сервере

Идемпотентные:

  • GET - запрос данных с сервера
  • PUT - отправьте данные для создания нового ресурса по указанному клиентом URL-адресу
  • DELETE - удалить ресурс с сервера.
  • HEAD - возвращает метаинформацию, такую ​​как заголовки ответа
  • OPTIONS - возвращать методы запроса, поддерживаемые службой
  • Разница между методами PUT и POST?

PUT Идемпотентный (т. е. несколько запросов дадут один и тот же результат).

  • Ответы PUT не кэшируются
  • Обновляет или заменяет целевой ресурс

POST не идемпотентный (т. е. несколько запросов дадут разные ресурсы ответа после добавления)

  • Ответы POST могут кэшироваться при правильном заголовке управления кешем.
  • Запрос обрабатывается веб-сервером на основе целевого ресурса.

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

  • Объясните, что означает Stateless в REST?

Отсутствие состояния означает, что клиент и сервер не хранят информацию о состоянии друг друга. Поскольку сервер не хранит никакой информации, он обрабатывает каждый запрос клиента как новый запрос.

Запрос клиента содержит всю информацию, необходимую серверу для обработки запроса. Клиентское приложение отвечает за сохранение состояния сеанса.

  • Каковы преимущества и недостатки REST API?

Преимущества:

  • Разработан для обеспечения высокой производительности, портативности, надежности и масштабируемости.
  • Разделение клиент-сервер позволяет каждому индивидуально работать и масштабироваться
  • Простота тестирования и адаптации к различным средам
  • Легко освоить, так как использует протокол HTTP.
  • Поддерживает различные технологии передачи данных, включая JSON, XML, YAML, изображения и многое другое.
  • Использует меньшую полосу пропускания, чем другие методы, такие как технология Simple Object Access Protocol (SOAP).

Недостатки включают:

  • Не применяет методы безопасности
  • Метод HTTP ограничивает вас синхронными запросами
  • Из-за отсутствия состояния вы не сможете поддерживать состояние (например, в сеансах).
  • В чем разница между AJAX и REST?

Клиент AJAX может сделать RESTful-запрос к REST API (например, запрос на получение), но AJAX не является архитектурным стилем. Это метод веб-разработки для клиентских приложений. Клиенты AJAX могут получить доступ к REST API, но они не реализованы с помощью AJAX.

  • В чем разница между SOAP и REST, RPC и REST?

Некоторые REST API используют протоколы SOAP, REST и SOAP — это совершенно разные подходы к созданию API.

SOAP:

  • Протокол
  • Формат данных ограничен XML
  • Тяжелый и требует большей пропускной способности
  • Запросы не кэшироваться
  • Требует в заголовке передавать параметр SOAPAction. Это путь вызова процедуры

RPC:

  • Удаленный вызов процедуры (remote procedure call)
  • Не возвращает HTTP статусы
  • Оперирует сообщением ответа при ошибках, которое состоит из error_code и message
  • Можно отнести gRPC протокол по HTTP2

REST:

  • Архитектурный стиль
  • Позволяет использовать различные форматы данных, включая обычный текст, HTML, XML, JSON и YAML.
  • Легкий и требует меньше пропускной способности
  • Запросы могут кэшироваться
  • Коды состояния ответа HTTP. Для чего они в REST?

Коды ответов HTTP указывают на результат клиентских запросов. В основном протокол строится на статусах и может дополнятся сообщением при не успешных статусах ответа.

4 Группы HTTP кодов:

  • 100 - Информационные (Information)
  • 200 - Успешные (Success)
  • 300 - Маршрутные (Redirect)
  • 400 - Клиентские (Client Error)
  • 500 - Серверные (Server Error)

Общие коды состояния HTTP:

  • 200 : Успешный запрос
  • 201 : Объект или объекты, созданные в результате успешного запроса.
  • 400 : Неверный запрос. Неверный запрос клиента.
  • 401 : Несанкционировано. Пользователь не авторизован для доступа к ресурсу и может не пройти аутентификацию
  • 403 : Запрещено. Пользователь не авторизован для доступа к ресурсу, пользователь аутентифицирован
  • 404 : Не найдено. Ресурс не найден
  • 500 : Внутренняя ошибка сервера. Общая ошибка сервера
  • 502 : Неверный шлюз. Ответ вышестоящего сервера недействителен
  • 503 : Сервис недоступен. Результат проблемы на стороне сервера, включая перегрузку или сбой системы
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment