Каковы причины и способы исправления HTTP-ошибки 400 (Bad Request)?

«Каковы причины и способы исправления HTTP-ошибки 400 (Bad Request)?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ошибка 400 Bad Request указывает, что сервер не может обработать запрос из-за неверного синтаксиса или некорректных данных.

Основные причины и решения:

  1. Неверные или отсутствующие параметры:

    • Причина: В запросе не хватает обязательных полей или переданы недопустимые значения.
    • Решение: Сверьтесь с документацией API и проверьте передаваемые параметры.
  2. Некорректный формат тела запроса:

    • Причина: Тело запроса не соответствует заявленному Content-Type (например, отправлен текст вместо JSON).
    • Решение: Убедитесь, что заголовок Content-Type корректен, а данные сериализованы правильно.
  3. Проблемы с заголовками (Headers):

    • Причина: Отсутствуют или неверны обязательные заголовки (например, Authorization).
    • Решение: Добавьте необходимые заголовки в соответствии с API-контрактом.

Пример исправления на Python (requests):

import requests
import json

# НЕПРАВИЛЬНО: данные отправляются как form-data, но ожидается JSON
response = requests.post('https://api.example.com/items', data={'name': 'Item1'})

# ПРАВИЛЬНО: явное указание JSON и заголовка
headers = {'Content-Type': 'application/json'}
data = {'name': 'Item1'}
response = requests.post('https://api.example.com/items', json=data, headers=headers)

# Проверка ответа
if response.status_code == 400:
    print("Ошибка клиента:", response.json())  # Сервер часто возвращает детали ошибки в теле

Инструменты для отладки: Используйте Postman, Insomnia или DevTools браузера для инспекции исходящих запросов и сравнения с корректными примерами.