Cluster · разработчикам

Request

Подготовленный HTTP-запрос. Изменения локальные; send(), download() и upload() обращаются к ядру.

Все методы SDK · Типы и ошибки

Получение объекта

request = app.web("https://example.org/status")

__init__

Создаёт Request. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.

def __init__(web: Web, url: str, method: str = 'GET', headers: dict[str, str] | None = None) -> None: ...

Аргументы

Результат

None. Создаёт Request. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

# Обычный способ получения объекта:
request = app.web("https://example.org/status")

Устанавливает строковый заголовок, заменяя прежний без учёта регистра имени.

def header(name: str, value: str) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Устанавливает строковый заголовок, заменяя прежний без учёта регистра имени.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

request.header("Accept", "application/json")

query

Заменяет выбранные параметры URL. None удаляет параметр, список или кортеж задаёт несколько значений.

def query(**values: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Заменяет выбранные параметры URL. None удаляет параметр, список или кортеж задаёт несколько значений.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

result = request.query(count=1)

json

Устанавливает JSON-тело и Content-Type application/json.

def json(value: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Устанавливает JSON-тело и Content-Type application/json.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

request.json({"count": 1})

form

Кодирует поля как application/x-www-form-urlencoded, поддерживая повторяющиеся значения.

def form(**values: QueryValue) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Кодирует поля как application/x-www-form-urlencoded, поддерживая повторяющиеся значения.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

request.form(name="Example")

text

Устанавливает строковое тело и выбранный Content-Type.

def text(value: str, content_type: str = 'text/plain; charset=utf-8') -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Устанавливает строковое тело и выбранный Content-Type.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

result = request.text("Example")

clone

Создаёт независимый запрос с теми же URL, методом, телом и копией заголовков.

def clone() -> Request: ...

Аргументы

Нет.

Результат

Request. Создаёт независимый запрос с теми же URL, методом, телом и копией заголовков.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

result = request.clone()

send

Отправляет GET, POST, PUT, PATCH, DELETE или HEAD через ядро. Другие HTTP-методы отклоняются.

async def send() -> Response: ...

Аргументы

Нет.

Результат

Response. Отправляет GET, POST, PUT, PATCH, DELETE или HEAD через ядро. Другие HTTP-методы отклоняются.

Права

Нужны web.request. Ограничение domains проверяется при запросе; web.full может заменить web.request.

Ошибки

Пример

result = await request.send()

download

Загружает обычный GET без заголовков и тела в файл Cluster. Не отправляет подготовленные заголовки молча.

async def download(filename: str, maximum: float | None = 10485760) -> File: ...

Аргументы

Результат

File. Загружает обычный GET без заголовков и тела в файл Cluster. Не отправляет подготовленные заголовки молча.

Права

Нужны web.request + files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение. Ограничение domains проверяется при запросе; web.full может заменить web.request.

Ошибки

Пример

result = await request.download("note.txt")

upload

Передаёт файл Cluster как тело запроса с сохранением выбранных метода и заголовков. Одновременное отдельное тело запрещено. Ответ маршрута upload содержит status и body; Response создаёт пустые headers и считает body текстовым.

async def upload(file: File | str) -> Response: ...

Аргументы

Результат

Response. Передаёт файл Cluster как тело запроса с сохранением выбранных метода и заголовков. Одновременное отдельное тело запрещено.

Права

Нужны web.request + files.read. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение. Ограничение domains проверяется при запросе; web.full может заменить web.request.

Ошибки

Пример

result = await request.upload("file-id")