--- title: Обработать HTTP-ответ description: Выберите тип успешного значения, ожидаемые ошибки и формат документа. freshness: false --- Операция объявляет все ответы, которые входят в контракт внешнего API. Обычный вызов возвращает типизированное значение или выбрасывает ожидаемое исключение. Неизвестный статус, неверный формат и тело, которое не проходит проверку модели, остаются отдельными ошибками контракта. ## Выберите задачу | Что отвечает API | Что объявить | Руководство | |---|---|---| | один успешный JSON | `HttpOperation[Model]` | {doc}`Получить типизированное значение ` | | несколько успешных статусов или форм | `success=` | {doc}`Получить типизированное значение ` | | ожидаемый отказ | `errors=` и `ApiError[Problem]` | {doc}`Разобрать ожидаемую ошибку ` | | HTML с CSS- или XPath-селекторами | модель документа | {doc}`Извлечь данные из HTML ` | | переход, адрес которого сообщает исход | `Location` на поле модели | {doc}`Прочитать исход из адреса перехода ` | | `200` на всё, исход в поле тела | теги `Const`, `OneOf`, `Not` на поле модели | {doc}`Разобрать ответ, где исход лежит в теле ` | `with_response(...)` сохраняет значение вместе со статусом, заголовками и исходным ответом обработчика. Обычный вызов отдаёт только предметный результат. ## Как SDK выбирает случай Сначала SDK сравнивает статус, тип содержимого и условие `when`. Затем выбранное представление читает тело и строит модель. Более узкий случай выигрывает: точный статус важнее диапазона, явный тип содержимого важнее общего, а случай с условием важнее случая без условия. Если два одинаково конкретных случая подходят одновременно, SDK возвращает `AmbiguousResponseError`. Если не подошёл ни один, вызывающий получает `UnexpectedResponseError`. Неверное тело выбранного случая приводит к `MalformedResponseError`. ## Дальше - {doc}`Получите значение и метаданные ответа `. - {doc}`Опишите ожидаемые отказы `. - {doc}`Настройте повторы после временных ошибок `.