Gernar
HTTP, API и сеть

Какие знаешь HTTP-методы

Разбор вопроса «Какие знаешь HTTP-методы» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

Какие знаешь HTTP-методы

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер хочет убедиться, что кандидат понимает основные HTTP-методы, их назначение, безопасность и идемпотентность. Также важно, чтобы кандидат мог объяснить разницу между похожими методами (например, PUT и PATCH).

Ключевые тезисы

  • GET — запрос данных от сервера. Безопасный (не изменяет состояние сервера) и идемпотентный.
  • POST — отправка данных на сервер для обработки. Не безопасный и не идемпотентный (может создавать новые ресурсы).
  • PUT — полное обновление ресурса. Идемпотентный, но не безопасный (изменяет состояние сервера).
  • PATCH — частичное обновление ресурса. Не идемпотентный и не безопасный.
  • DELETE — удаление ресурса. Идемпотентный, но не безопасный.
  • HEAD — аналогичен GET, но возвращает только заголовки без тела. Полезен для проверки доступности ресурса.
  • OPTIONS — возвращает поддерживаемые методы для ресурса. Используется в CORS.
  • TRACE — диагностический метод, возвращает полученный запрос. Используется для отладки.
  • CONNECT — используется для установки туннеля (например, для HTTPS через прокси).

Подробный ответ

HTTP-методы — это набор операций, которые клиент может выполнить на сервере для взаимодействия с ресурсами. Они являются основой RESTful API и определяют, какие действия можно выполнять с данными. Основные методы включают GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACE и CONNECT. Каждый из них имеет свои особенности и предназначение. Например, GET используется для получения данных, POST — для создания новых ресурсов, PUT — для полного обновления ресурса, а PATCH — для частичного обновления. Важно понимать, что некоторые методы, такие как GET и HEAD, считаются безопасными, так как они не изменяют состояние сервера, а другие, например POST и DELETE, могут изменять данные. Также важно учитывать идемпотентность методов: например, PUT и DELETE являются идемпотентными, так как многократное выполнение этих операций не приведет к изменению результата.

Практические примеры

Пример 1

Использование GET для получения данных. Например, запрос GET /api/users вернет список всех пользователей.

Пример 2

Использование POST для создания нового ресурса. Например, запрос POST /api/users с телом { 'name': 'John', 'age': 30 } создаст нового пользователя.

Пример 3

Использование PUT для обновления ресурса. Например, запрос PUT /api/users/1 с телом { 'name': 'John', 'age': 31 } полностью обновит данные пользователя с id=1.

Пример 4

Использование HEAD для проверки доступности ресурса. Например, запрос HEAD /api/users/1 вернет заголовки, но не тело ответа, что полезно для проверки существования ресурса.

Частые ошибки

  • Ошибка #1: Путаница между PUT и PATCH. PUT полностью заменяет ресурс, а PATCH обновляет только указанные поля.
  • Ошибка #2: Использование GET для передачи чувствительных данных. GET не должен использоваться для передачи паролей или другой конфиденциальной информации, так как данные передаются в URL.
  • Ошибка #3: Непонимание идемпотентности. Некоторые кандидаты не понимают, что многократное выполнение PUT или DELETE не изменит результат.

Связанные темы

  • RESTful API — концепция построения веб-сервисов, основанная на использовании HTTP-методов.
  • CORS (Cross-Origin Resource Sharing) — механизм, который использует метод OPTIONS для проверки разрешений на запросы между разными доменами.
  • Идемпотентность — свойство операции, при котором многократное выполнение не изменяет результат.

Follow-up вопросы

Чем отличается PUT от PATCH?

Уровень: intermediate

PUT полностью заменяет ресурс на новые данные, а PATCH обновляет только указанные поля ресурса. PUT идемпотентен, PATCH — нет.

Почему GET считается безопасным и идемпотентным?

Уровень: basic

GET безопасен, потому что не изменяет состояние сервера. Он идемпотентен, так как многократные запросы возвращают одинаковый результат.

Какие статус-коды могут возвращаться при успешном выполнении POST?

Уровень: intermediate

201 Created — ресурс успешно создан. 200 OK — запрос обработан успешно, но ресурс не создан. 204 No Content — запрос обработан, но тело ответа отсутствует.

Как используется метод OPTIONS в контексте CORS?

Уровень: advanced

OPTIONS используется для предварительного запроса (preflight) в CORS, чтобы проверить, поддерживает ли сервер запрашиваемый метод и заголовки.

Когда может быть полезен метод HEAD?

Уровень: basic

HEAD полезен для проверки существования ресурса или получения метаданных (заголовков) без загрузки тела ответа, что экономит трафик.

Содержание