mirror of https://github.com/tiangolo/fastapi.git
📝 Update docs for `ORJSONResponse` with details about improving performance (#2615)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
This commit is contained in:
parent
278adc012a
commit
a71077c530
|
|
@ -21,6 +21,12 @@ For example, if you are squeezing performance, you can install and use <a href="
|
||||||
|
|
||||||
Import the `Response` class (sub-class) you want to use and declare it in the *path operation decorator*.
|
Import the `Response` class (sub-class) you want to use and declare it in the *path operation decorator*.
|
||||||
|
|
||||||
|
For large responses, returning a `Response` directly is much faster than returning a dictionary.
|
||||||
|
|
||||||
|
This is because by default, FastAPI will inspect every item inside and make sure it is serializable with JSON, using the same [JSON Compatible Encoder](../tutorial/encoder.md){.internal-link target=_blank} explained in the tutorial. This is what allows you to return **arbitrary objects**, for example database models.
|
||||||
|
|
||||||
|
But if you are certain that the content that you are returning is **serializable with JSON**, you can pass it directly to the response class and avoid the extra overhead that FastAPI would have by passing your return content through the `jsonable_encoder` before passing it to the response class.
|
||||||
|
|
||||||
```Python hl_lines="2 7"
|
```Python hl_lines="2 7"
|
||||||
{!../../../docs_src/custom_response/tutorial001b.py!}
|
{!../../../docs_src/custom_response/tutorial001b.py!}
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -6,4 +6,4 @@ app = FastAPI()
|
||||||
|
|
||||||
@app.get("/items/", response_class=ORJSONResponse)
|
@app.get("/items/", response_class=ORJSONResponse)
|
||||||
async def read_items():
|
async def read_items():
|
||||||
return [{"item_id": "Foo"}]
|
return ORJSONResponse([{"item_id": "Foo"}])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue