Встречается на 32% собеседований по QA Manual
Какие знаешь методы HTTP
HTTP-методы — это стандартные команды протокола HTTP, которые клиент отправляет серверу, чтобы указать желаемое действие над ресурсом. Основные методы: GET, POST, PUT, PATCH, DELETE, HEAD и OPTIONS. Они лежат в основе REST API и используются для реализации CRUD-операций.
Основные методы
| Метод | Назначение | Пример использования |
|---|---|---|
| GET | Получение данных без изменения состояния сервера | Запрос списка пользователей |
| POST | Создание нового ресурса | Добавление нового пользователя |
| PUT | Полное обновление существующего ресурса | Замена всех данных пользователя |
| PATCH | Частичное обновление ресурса | Изменение только имени пользователя |
| DELETE | Удаление ресурса | Удаление пользователя |
| HEAD | Аналогичен GET, но возвращает только заголовки | Проверка существования ресурса без тела ответа |
| OPTIONS | Получение информации о поддерживаемых методах для ресурса | Определение доступных операций для конечной точки |
Свойства методов
Методы HTTP характеризуются двумя важными свойствами:
- Безопасность: метод не изменяет состояние сервера. Безопасными считаются GET, HEAD и OPTIONS.
- Идемпотентность: повторное выполнение метода даёт тот же результат, что и первое. Идемпотентными являются GET, PUT, DELETE, HEAD и OPTIONS. POST и PATCH не идемпотентны, так как повторный вызов может создать несколько ресурсов или изменить данные несколько раз.
Пример тестирования API на Python
Для тестирования API часто используется библиотека requests. Примеры вызовов основных методов:
python
import requests
# GET — получение данных
response = requests.get('https://api.example.com/users')
# POST — создание ресурса
response = requests.post('https://api.example.com/users', json={'name': 'John'})
# PUT — полное обновление
response = requests.put('https://api.example.com/users/1', json={'name': 'Jane'})
# PATCH — частичное обновление
response = requests.patch('https://api.example.com/users/1', json={'name': 'Jane'})
# DELETE — удаление
response = requests.delete('https://api.example.com/users/1')Подводные камни
- Не путать PUT и PATCH: PUT заменяет ресурс целиком, PATCH — только указанные поля.
- POST не идемпотентен: повторная отправка создаст дубликат. Это важно учитывать при написании тестов.
- HEAD полезен для проверки доступности ресурса без загрузки тела ответа, что экономит трафик.
- OPTIONS используется для CORS-запросов и позволяет узнать, какие методы разрешены для конкретного URL.
Коротко
- Основные методы: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.
- GET, HEAD, OPTIONS — безопасны; GET, PUT, DELETE, HEAD, OPTIONS — идемпотентны.
- PUT — полное обновление, PATCH — частичное.
- В тестах API используйте библиотеку
requestsдля вызова методов и проверки статус-кодов и тела ответа.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
