Response
class
You can declare a parameter in a path operation function or dependency to be of type Response
and then you can set data for the response like headers or cookies.
You can also use it directly to create an instance of it and return it from your path operations.
You can import it directly from fastapi
:
from fastapi import Response
fastapi.Response
Response(
content=None,
status_code=200,
headers=None,
media_type=None,
background=None,
)
PARAMETER | DESCRIPTION |
---|
content | TYPE: Any DEFAULT: None |
status_code | TYPE: int DEFAULT: 200 |
headers | TYPE: Optional[Mapping[str, str]] DEFAULT: None |
media_type | TYPE: Optional[str] DEFAULT: None |
background | TYPE: Optional[BackgroundTask] DEFAULT: None |
Source code in starlette/responses.py
43 44 45 46 47 48 49 50 51 52 53 54 55 56
| def init( self, content: typing.Any = None, status_code: int = 200, headers: typing.Optional[typing.Mapping[str, str]] = None, media_type: typing.Optional[str] = None, background: typing.Optional[BackgroundTask] = None, ) -> None: self.status_code = status_code if media_type is not None: self.media_type = media_type self.background = background self.body = self.render(content) self.init_headers(headers)
|
media_type = None
charset class-attribute
instance-attribute
charset = 'utf-8'
status_code instance-attribute
status_code = status_code
background instance-attribute
background = background
body instance-attribute
body = render(content)
headers
render
render(content)
PARAMETER | DESCRIPTION |
---|
content | TYPE: Any |
Source code in starlette/responses.py
| def render(self, content: typing.Any) -> bytes: if content is None: return b“” if isinstance(content, bytes): return content return content.encode(self.charset)
|
init_headers(headers=None)
PARAMETER | DESCRIPTION |
---|
headers | TYPE: Optional[Mapping[str, str]] DEFAULT: None |
Source code in starlette/responses.py
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| def init_headers( self, headers: typing.Optional[typing.Mapping[str, str]] = None ) -> None: if headers is None: raw_headers: typing.List[typing.Tuple[bytes, bytes]] = [] populate_content_length = True populate_content_type = True else: raw_headers = [ (k.lower().encode(“latin-1”), v.encode(“latin-1”)) for k, v in headers.items() ] keys = [h[0] for h in raw_headers] populate_content_length = b“content-length” not in keys populate_content_type = b“content-type” not in keys
body = getattr(self, “body”, None) if ( body is not None and populate_content_length and not (self.status_code < 200 or self.status_code in (204, 304)) ): content_length = str(len(body)) raw_headers.append((b“content-length”, content_length.encode(“latin-1”)))
content_type = self.media_type if content_type is not None and populate_content_type: if content_type.startswith(“text/“): content_type += “; charset=” + self.charset raw_headers.append((b“content-type”, content_type.encode(“latin-1”)))
self.raw_headers = raw_headers
|
set_cookie
set_cookie(
key,
value="",
max_age=None,
expires=None,
path="/",
domain=None,
secure=False,
httponly=False,
samesite="lax",
)
PARAMETER | DESCRIPTION |
---|
key | TYPE: str |
value | TYPE: str DEFAULT: ‘’ |
max_age | TYPE: Optional[int] DEFAULT: None |
expires | TYPE: Optional[Union[datetime, str, int]] DEFAULT: None |
path | TYPE: str DEFAULT: ‘/‘ |
domain | TYPE: Optional[str] DEFAULT: None |
secure | TYPE: bool DEFAULT: False |
httponly | TYPE: bool DEFAULT: False |
samesite | TYPE: Optional[Literal[‘lax’, ‘strict’, ‘none’]] DEFAULT: ‘lax’ |
Source code in starlette/responses.py
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
| def set_cookie( self, key: str, value: str = “”, max_age: typing.Optional[int] = None, expires: typing.Optional[typing.Union[datetime, str, int]] = None, path: str = “/“, domain: typing.Optional[str] = None, secure: bool = False, httponly: bool = False, samesite: typing.Optional[Literal[“lax”, “strict”, “none”]] = “lax”, ) -> None: cookie: “http.cookies.BaseCookie[str]” = http.cookies.SimpleCookie() cookie[key] = value if max_age is not None: cookie[key][“max-age”] = max_age if expires is not None: if isinstance(expires, datetime): cookie[key][“expires”] = format_datetime(expires, usegmt=True) else: cookie[key][“expires”] = expires if path is not None: cookie[key][“path”] = path if domain is not None: cookie[key][“domain”] = domain if secure: cookie[key][“secure”] = True if httponly: cookie[key][“httponly”] = True if samesite is not None: assert samesite.lower() in [ “strict”, “lax”, “none”, ], “samesite must be either ‘strict’, ‘lax’ or ‘none’” cookie[key][“samesite”] = samesite cookie_val = cookie.output(header=“”).strip() self.raw_headers.append((b“set-cookie”, cookie_val.encode(“latin-1”)))
|
delete_cookie
delete_cookie(
key,
path="/",
domain=None,
secure=False,
httponly=False,
samesite="lax",
)
PARAMETER | DESCRIPTION |
---|
key | TYPE: str |
path | TYPE: str DEFAULT: ‘/‘ |
domain | TYPE: Optional[str] DEFAULT: None |
secure | TYPE: bool DEFAULT: False |
httponly | TYPE: bool DEFAULT: False |
samesite | TYPE: Optional[Literal[‘lax’, ‘strict’, ‘none’]] DEFAULT: ‘lax’ |
Source code in starlette/responses.py
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
| def delete_cookie( self, key: str, path: str = “/“, domain: typing.Optional[str] = None, secure: bool = False, httponly: bool = False, samesite: typing.Optional[Literal[“lax”, “strict”, “none”]] = “lax”, ) -> None: self.set_cookie( key, max_age=0, expires=0, path=path, domain=domain, secure=secure, httponly=httponly, samesite=samesite, )
|