API объекта ответа Flask

Класс Response представляет HTTP-ответ, возвращаемый функциями представления Flask. В большинстве случаев создавать его напрямую не нужно — Flask автоматически преобразует возвращаемые значения функций представления в объекты Response.

Когда требуется ручное управление, используйте функциюmake_response().


Конструктор

Параметр Type Значение по умолчанию Описание
response str / bytes / итератор Обязательный Содержимое тела ответа
status int / str 200 Код состояния HTTP или текст состояния, например 404 или "404 Not Found"
headers dict / list Отсутствует Заголовки ответа, dict или список кортежей (key, value)
mimetype str Отсутствует Тип MIME, например "application/json"
content_type str Отсутствует Заголовок Content-Type, включая charset, например "text/html; charset=utf-8"
direct_passthrough bool False Если True, передавать тело ответа напрямую без какой-либо обработки.

Основные атрибуты

Свойство Type Описание
status str Статус ответа (в текстовой форме), например "200 OK" или "404 Not Found"
status_code int Коды состояния HTTP, например 200, 404
headers Headers Объект заголовка ответа, поддерживает операции в стиле словаря
data bytes Байтовое представление тела ответа
mimetype str MIME-тип (без кодировки), например, "text/html"
content_type str Content-Type (включая charset), например, "text/html; charset=utf-8"
content_length int Длина тела ответа в байтах

Операции с заголовками ответа

Методы Описание
headers.get(key) Получить значение указанного заголовка ответа
headers[key] = value Установить заголовки ответа
headers.update(dict) Пакетное обновление заголовков ответа

Операции с cookie

Методы Описание
set_cookie(key, value, max_age, expires, path, domain, secure, httponly, samesite) Установить Cookie. max_age задаётся в секундах, expires — это datetime, secure — только HTTPS
delete_cookie(key, path, domain) Удалить указанный Cookie
Параметры set_cookie: max_age Время жизни Cookie в секундах, например, max_age=3600 означает 1 час
Параметры set_cookie: secure По умолчанию используется значение конфигурации SESSION_COOKIE_SECURE; если True, отправляется только по HTTPS
Параметры set_cookie: httponly По умолчанию True, что запрещает JavaScript доступ к этому Cookie
Параметры set_cookie: samesite "Strict", "Lax" или None, управляющие поведением отправки кросс-сайтовых Cookie

Другие методы

Методы Описание
get_json(force=False, silent=False) Разобрать тело ответа как JSON (в основном используется для тестирования).
freeze() Заморозить ответ в неизменяемое состояние
force_type(response, environ) Метод класса, принудительно преобразующий другие типы ответов в тип Response.

Примеры кода

Пример

from flask import Flask, make_response

app = Flask(__name__)

@app.route("/custom")
def custom_response():
    # Используйте make_response для ручного создания ответа
    resp = make_response("<h1>Привет, EXAMPLE!</h1>")

    # Установите код состояния
    resp.status_code = 201

    # Установить пользовательские заголовки ответа
    resp.headers["X-Custom-Header"] = "my-value"

    # Установить Cookie
    resp.set_cookie("theme", "dark", max_age=86400)    # Действует 24 часа
    resp.set_cookie("lang", "zh-CN", samesite="Lax")   # Ограничение SameSite

    return resp

@app.route("/delete-cookie")
def delete_cookie():
    resp = make_response("Cookie удалён")
    resp.delete_cookie("theme")
    return resp

@app.route("/api/data")
def api_data():
    # Вернуть dict напрямую; Flask автоматически сериализует его в JSON-ответ
    return {"status": "ok", "data": [1, 2, 3]}
Другие расширения