--- title: Получить типизированное значение и метаданные description: Выведите успешный случай из HttpOperation[T] и при необходимости сохраните HTTP-ответ. sources: - eazy_sdk.api - eazy_sdk.response api_fingerprint: "sha256:fe9ff583491945260b6a11e39a02e4bba57aa8b5b8add31aa2b9df8886ab7347" --- `HttpOperation[Order]` объявляет обычный успешный ответ: статус `200`, JSON-тело и модель `Order`. Метод `with_response(...)` выполняет ту же операцию, но возвращает `ResponseEnvelope[Order]` с HTTP-метаданными. Дополнительное объявление не нужно. :::::{grid} 1 1 2 2 :class-container: http-exchange :gutter: 2 ::::{grid-item} :class: http-panel http-panel--request **→ Request** · ``GET /orders/order-42`` :::: ::::{grid-item} :class: http-panel http-panel--response **← Response** · ``200 OK`` ```text X-Request-ID: request-42 Content-Type: application/json {"id": "order-42", "status": "paid", "total": 12900} ``` :::: ::::: ```{literalinclude} ../../../../../../examples/docs/response_success.py :language: python :start-after: "# docs:example:start" :end-before: "# docs:example:end" ``` Обычный `get(...)` вернул бы `Order`. В примере `.with_response(...)` сохраняет его в `.value`, статус в `.status_code`, заголовки в `.headers`, а исходный объект обработчика в `.response.raw_response`. :::{dropdown} Файл примера целиком ```{literalinclude} ../../../../../../examples/docs/response_success.py :language: python ``` ::: Запуск: `uv run python examples/docs/response_success.py`. ```text status: 200 order: order-42 paid request id: request-42 ``` ## Объявить несколько успешных случаев Используйте `success=`, когда операция возвращает разные модели или особый статус. Например, `success={201: Order, 202: AcceptedOrder}` различает созданный и принятый в обработку заказ. Значением может быть модель, `Json`, `Text`, `Bytes`, `Empty` или список представлений. Условие `when=` различает формы с одинаковым статусом. Тип результата операции должен включать все возможные значения. Строка `str` означает текст, `bytes` означает бинарное тело, а `None` означает пустой ответ. Явные представления нужны, когда контракт задаёт особый тип содержимого, условие или способ разбора. ## Дальше - {doc}`Разберите ожидаемую ошибку `. - {doc}`Извлеките данные из HTML `. - {doc}`Настройте модели и кодеки `.