Skip to content

Commit

Permalink
📝 Update docs for ORJSONResponse with details about improving perfo…
Browse files Browse the repository at this point in the history
…rmance (#2615)

Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
  • Loading branch information
falkben and tiangolo committed Sep 1, 2022
1 parent 278adc0 commit a71077c
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
6 changes: 6 additions & 0 deletions docs/en/docs/advanced/custom-response.md
Expand Up @@ -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*.

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"
{!../../../docs_src/custom_response/tutorial001b.py!}
```
Expand Down
2 changes: 1 addition & 1 deletion docs_src/custom_response/tutorial001b.py
Expand Up @@ -6,4 +6,4 @@

@app.get("/items/", response_class=ORJSONResponse)
async def read_items():
return [{"item_id": "Foo"}]
return ORJSONResponse([{"item_id": "Foo"}])

0 comments on commit a71077c

Please sign in to comment.