Response Return Values#
Response functions can return a number of different types as the response value which will trigger different responses to the client. The possible direct returns are,
Response Values#
str#
return "Hello"
return await render_template("index.html")
A solitary string return indicates that you intend to return a string
mimetype text/html
. The string will be encoded using the default
charset
.
dict#
return {"a": "b"}
A solitary dict return indicates that you intend to return json,
application/json
. The jsonify function will be used to encode the
dictionary.
list#
return ["a", "b"]
A solitary list return indicates that you intend to return json,
application/json
. The jsonify function will be used to encode the
list.
Response#
@app.route('/')
async def route_func():
return Response("Hello")
Returning a Response instance indicates that you know exactly what you wish to return.
AsyncGenerator[bytes, None]#
@app.route('/')
async def route_func():
async def agen():
data = await something
yield data
return agen()
Returning an async generator allows for the response to be streamed to
the client, thereby lowing the peak memory usage, if combined with a
Transfer-Encoding
header with value chunked
.
Generator[bytes, None, None]#
@app.route('/')
async def route_func():
def gen():
yield data
return gen()
Returning an generator allows for the response to be streamed to the
client, thereby lowing the peak memory usage, if combined with a
Transfer-Encoding
header with value chunked
.
Combinations#
Any of the above Response Values can be combined, as described,
Tuple[ResponseValue, int]#
@app.route('/')
async def route_func():
return "Hello", 200
A tuple of a Response Value and a integer indicates that you intend to specify the status code.
Tuple[str, int, Dict[str, str]]#
@app.route('/')
async def route_func():
return "Hello", 200, {'X-Header': 'Value'}
A tuple of a Response Value, integer and dictionary indicates that you intend to specify additional headers.