<aside> <img src="/icons/calendar-day_gray.svg" alt="/icons/calendar-day_gray.svg" width="40px" />
16 июня 2026
</aside>
<aside> <img src="/icons/clock-alternate_lightgray.svg" alt="/icons/clock-alternate_lightgray.svg" width="40px" />
20 минут
</aside>
Какое ключевое преимущество REST делает его оптимальным для масштабируемых веб-сервисов?
GET, POST, PUT, DELETE, что упрощает интеграцию и масштабированиеВаше приложение должно взаимодействовать с RESTful API, а вы хотите протестировать корректность обработки POST-запросов. Вам необходимо проверить, что сервер правильно возвращает ошибки при некорректно сформированных данных в теле запроса. Тело запроса должно содержать JSON-объект с обязательными параметрами. Тестирование должно включать автоматическую проверку содержимого ответов на запросы.
Какую последовательность действий следует выполнить в Postman, чтобы автоматически проверить, что сервер возвращает ошибки при некорректных данных в запросе?
Вы разрабатываете API для мобильного приложения и рассматриваете использование JWT для аутентификации.
Почему JWT может быть предпочтительным выбором для распределенной системы с большим количеством пользователей для мобильного приложения?
Ваш API использует настройку OpenID Connect над OAuth 2.0, выступающая в качестве протокола аутентификации для авторизации пользователей. Во время тестирования вы заметили, что повторные запросы авторизации от одного и того же пользователя не создают новую сессию, а продолжают использовать уже существующую. Это положительно повлияло на производительность и предотвращение возможных конфликтов данных.
В чем причины таких изменений использования OpenID Connect? Такая настройка:
Ваш API обрабатывает запросы на обновление ресурса. Клиент отправляет запрос с некорректным синтаксисом в теле, например, отсутствует обязательное поле идентификатора ресурса, которого нет в системе. Сервер должен выбрать приоритетную ошибку, чтобы корректно уведомить клиента о причине отказа.
Почему в этой ситуации сервер должен использовать код 400 для обработки ошибки?
Ваша микросервисная система обрабатывает заказы в режиме реального времени. Разные узлы могут одновременно обновлять одни и те же заказы. При этом клиенты порой дублируют запросы PUT или PATCH, пытаясь гарантированно применить изменения, а также повторяют запросы после таймаутов. Вам нужно обеспечить идемпотентность и избежать «гонок», из-за которых один узел может перезаписать изменения другого, нарушая согласованность данных.
Какой подход к CRUD-операциям позволит эффективно поддерживать идемпотентность и управление конкурентными обновлениями в распределенной среде?
При выполнении массового обновления профилей пользователей методом PUT некоторые клиенты получают разные результаты при повторных запросах, хотя метод PUT должен быть идемпотентным. Нужно определить, какие факторы могут вызывать такие непредсказуемые результаты, и как они связаны с принципом идемпотентности.
Какое из свойств метода PUT или серверной обработки может нарушить идемпотентность в данном случае?
Ваш API обновляет данные профилей пользователей. При высокой нагрузке возникает множество повторяющихся PUT-запросов почти одновременно, что приводит к лишней записи в базу данных и конфликтам в распределенной среде. Из-за этого часть запросов дублирует уже внесенные изменения или отправка тех же данных не меняла итоговое состояние.
Как обеспечить корректную обработку повторных PUT-запросов, сохраняя идемпотентность метода?
Вы реализовали систему уведомлений на WebSocket, но теперь требуется поддерживать дополнительные протоколы, такие как SSE и Webhooks, для других клиентов. Вам нужно сделать систему расширяемой, обеспечить идемпотентность и избежать гонок данных между клиентами.
Какой подход вы выберете для поддержки нескольких протоколов уведомлений?
Вы планируете опубликовать свое API для внешних разработчиков и хотите предоставить актуальную документацию, которая автоматически обновляется при изменениях в коде. Список факторов:
Какие из перечисленных факторов связаны с поддержкой автоматического обновления документации в OpenAPI?
Ваш API должен быть совместим с клиентами, которые работают с различным форматом данных. У некоторых клиентов устаревшие системы, принимающие только XML, тогда как другие используют современные приложения, требующие JSON. Вы хотите, чтобы сервер оставался универсальным, позволяя клиентам выбирать предпочтительный формат ответа с минимальными изменениями в коде. При этом нужно учесть REST-подход и оптимальную поддержку content-negotiation.
Какой из перечисленных ниже, самый оптимальный способ организации API, дающий возможность клиенту выбирать предпочтительный формат данных в ответе?
Вы хотите обеспечить безопасную передачу JWT-токенов между клиентом и сервером. Клиенты вашего API могут использовать как браузеры, так и мобильные приложения.
Какой метод хранения и передачи токенов лучше всего подходит для обеспечения безопасности JWT?
Ваша компания переходит на микросервисную архитектуру. Данные о пользователях хранятся в одном сервисе, а информация о заказах – в другом. Вы хотите, чтобы клиент мог одним GraphQL-запросом получить всю нужную информацию – например, профиль пользователя и историю его заказов, не обращаясь к нескольким эндпоинтам отдельно. Необходимо обеспечить объединение данных из нескольких микросервисов, сохраняя единый GraphQL-шлюз (gateway).
Ваш API должен быть доступен только для определенной группы клиентов, которые аутентифицируются через API-ключи. У каждого клиента есть уникальный ключ, и ваша цель – обеспечить:
Ваш API поддерживает запросы, возвращающие большие массивы данных, до 100 000 записей, но клиенты редко используют более 10% этих данных. Например: