レスポンスの戻り値#
レスポンス関数は、クライアントへの異なるレスポンスをトリガーする、いくつかの異なる型をレスポンス値として返すことができます。可能な直接的な戻り値は次のとおりです。
レスポンス値#
str#
return "Hello"
return await render_template("index.html")
単一の文字列の戻り値は、文字列のMIMEタイプtext/htmlを返すことを意味します。文字列は、デフォルトのcharsetを使用してエンコードされます。
dict#
return {"a": "b"}
単一の辞書の戻り値は、JSON、application/jsonを返すことを意味します。辞書のエンコードには、jsonify関数が使用されます。
list#
return ["a", "b"]
単一のリストの戻り値は、JSON、application/jsonを返すことを意味します。リストのエンコードには、jsonify関数が使用されます。
Response#
@app.route('/')
async def route_func():
return Response("Hello")
Responseインスタンスを返すことは、正確に何を返したいのかを知っていることを意味します。
AsyncGenerator[bytes, None]#
@app.route('/')
async def route_func():
async def agen():
data = await something
yield data
return agen()
非同期ジェネレータを返すことで、レスポンスをクライアントにストリーミングでき、Transfer-Encodingヘッダーの値がchunkedの場合、ピークメモリ使用量を削減できます。
Generator[bytes, None, None]#
@app.route('/')
async def route_func():
def gen():
yield data
return gen()
ジェネレータを返すことで、レスポンスをクライアントにストリーミングでき、Transfer-Encodingヘッダーの値がchunkedの場合、ピークメモリ使用量を削減できます。
組み合わせ#
上記のレスポンス値は、説明されているように組み合わせることができます。
Tuple[ResponseValue, int]#
@app.route('/')
async def route_func():
return "Hello", 200
レスポンス値と整数のタプルは、ステータスコードを指定することを意味します。
Tuple[str, int, Dict[str, str]]#
@app.route('/')
async def route_func():
return "Hello", 200, {'X-Header': 'Value'}
レスポンス値、整数、辞書のタプルは、追加のヘッダーを指定することを意味します。