Что нужно исправить в запросе, который вернул ошибку «Формат сообщения не поддерживается» (415 Unsupported Media Type)?

«Что нужно исправить в запросе, который вернул ошибку «Формат сообщения не поддерживается» (415 Unsupported Media Type)?» — вопрос из категории API тестирование, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ошибка 415 Unsupported Media Type указывает, что сервер отказывается обработать запрос, потому что формат полезной нагрузки (тела запроса) не поддерживается. Вот пошаговый чек-лист, который я использую для диагностики:

1. Проверьте заголовок Content-Type: Это самая частая причина. Заголовок должен точно соответствовать фактическому формату тела.

  • Для JSON: Content-Type: application/json
  • Для XML: Content-Type: application/xml или text/xml
  • Для форм: Content-Type: application/x-www-form-urlencoded или multipart/form-data

2. Проверьте валидность тела запроса: Убедитесь, что тело синтаксически корректно.

  • JSON: Проверьте на отсутствие лишних/недостающих запятых, кавычек.
  • Используйте валидаторы (например, json.loads() в Python).

3. Проверьте заголовок Accept (опционально, но важно): Хотя Accept указывает, какой формат ответа ожидает клиент, некоторые серверы могут проверять и его. Убедитесь, что сервер может ответить в запрашиваемом формате.

Пример исправления запроса:

Неправильно: Сервер ожидает JSON, но заголовок не установлен или тело невалидно.

POST /api/users HTTP/1.1
Host: example.com

{ "name": "Alice", age: 30 }  # Ошибка: нет кавычек у `age`

Правильно:

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Accept: application/json

{
  "name": "Alice",
  "age": 30
}

В инструментах тестирования (например, Postman): Убедитесь, что вкладка "Body" имеет правильный формат (raw/JSON), а заголовок Content-Type проставляется автоматически или вручную.