Skip to content

Response API Reference

Handler Signature

python
async def handler(req: Request, response: Response) -> Response:
    # Usage examples below

Core Methods

1. Setting Response Type

text()

python
.text(content: str, status_code: int = 200, headers: Dict[str, Any] = {}) -> Response
  • Sets plain text response
  • Example:
    python
    return response.text("Hello World")

json()

python
.json(
    data: Union[str, List[Any], Dict[str, Any]],
    status_code: int = 200,
    headers: Dict[str, Any] = {},
    indent: Optional[int] = None,
    ensure_ascii: bool = True
) -> Response
  • Sets JSON response
  • Example:
    python
    return response.json({"key": "value"}, indent=2)

html()

python
.html(content: str, status_code: int = 200, headers: Dict[str, Any] = {}) -> Response
  • Sets HTML response
  • Example:
    python
    return response.html("<h1>Hello</h1>")

file()

python
.file(
    path: Union[str, Path],
    filename: Optional[str] = None,
    content_disposition_type: str = "inline"
) -> Response
  • Sends file response
  • Example:
    python
    return response.file("/path/to/file.pdf")

download()

python
.download(path: Union[str, Path], filename: Optional[str] = None) -> Response
  • Forces file download
  • Example:
    python
    return response.download("/path/to/file.zip")

stream()

python
.stream(
    iterator: Generator[Union[str, bytes], Any, Any],
    content_type: str = "text/plain",
    status_code: Optional[int] = None
) -> Response
  • Streams response
  • Example:
    python
    def gen():
        yield "streaming"
        yield "content"
    return response.stream(gen())

redirect()

python
.redirect(url: str, status_code: int = 302) -> Response
  • Redirects to URL
  • Example:
    python
    return response.redirect("/new-location")

empty()

python
.empty(status_code: int = 200, headers: Dict[str, Any] = {}) -> Response
  • Empty response body
  • Example:
    python
    return response.empty(status_code=204)

2. Headers & Cookies

set_header()

python
.set_header(key: str, value: str, overide: bool = False) -> Response
  • Sets response header
  • Example:
    python
    return response.set_header("X-Custom", "value")

set_headers()

python
.set_headers(headers: Dict[str, str], overide_all: bool = False) -> Response
  • Sets multiple headers
  • Example:
    python
    return response.set_headers({"X-One": "1", "X-Two": "2"})

remove_header()

python
.remove_header(key: str) -> Response
  • Removes header
  • Example:
    python
    return response.remove_header("X-Remove-Me")
python
.set_cookie(
    key: str,
    value: str,
    max_age: Optional[int] = None,
    expires: Optional[Union[str, datetime, int]] = None,
    path: str = "/",
    domain: Optional[str] = None,
    secure: bool = True,
    httponly: bool = False,
    samesite: Optional[Literal["lax", "strict", "none"]] = "lax"
) -> Response
  • Sets cookie
  • Example:
    python
    return response.set_cookie("session", "abc123", httponly=True)
python
.set_permanent_cookie(key: str, value: str, **kwargs: Dict[str, Any]) -> Response
  • Sets cookie with 10-year expiration
  • Example:
    python
    return response.set_permanent_cookie("user_id", "1234")
python
.delete_cookie(
    key: str,
    path: str = "/",
    domain: Optional[str] = None
) -> Response
  • Deletes cookie
  • Example:
    python
    return response.delete_cookie("old_cookie")

3. Response Configuration

status()

python
.status(status_code: int) -> Response
  • Sets HTTP status code
  • Example:
    python
    return response.status(404)

cache()

python
.cache(max_age: int = 3600, private: bool = True) -> Response
  • Enables caching
  • Example:
    python
    return response.cache(max_age=86400)

no_cache()

python
.no_cache() -> Response
  • Disables caching
  • Example:
    python
    return response.no_cache()

Properties

python
.headers: MutableHeaders  # All current headers
.cookies: List[Dict[str, Any]]  # All cookies
.body: Union[bytes, memoryview]  # Response body
.content_type: Optional[str]  # Content-Type header
.content_length: str  # Content-Length

Advanced Usage

make_response()

python
.make_response(response_class: BaseResponse) -> Response
  • Uses custom response class while preserving headers/cookies
  • Example:
    python
    custom_resp = CustomResponse()
    return response.make_response(custom_resp)

resp()

python
.resp(
    body: Union[JSONType, Any] = "",
    status_code: int = 200,
    headers: Optional[Dict[str, str]] = None,
    content_type: str = "text/plain"
) -> Response
  • Low-level response configuration
  • Example:
    python
    return response.resp(b"raw", content_type="application/octet-stream")