From b269655b7f37036d332ce458a6042ec1dfffced7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Thu, 21 Mar 2019 18:08:10 +0400 Subject: [PATCH] :memo: Add docs for application configuration (OpenAPI) --- .../application-configuration/image01.png | Bin 0 -> 38068 bytes .../application_configuration/tutorial002.py | 2 +- .../application_configuration/tutorial003.py | 5 +- docs/tutorial/application-configuration.md | 46 ++++++++++++++++-- 4 files changed, 44 insertions(+), 9 deletions(-) create mode 100644 docs/img/tutorial/application-configuration/image01.png diff --git a/docs/img/tutorial/application-configuration/image01.png b/docs/img/tutorial/application-configuration/image01.png new file mode 100644 index 0000000000000000000000000000000000000000..e9800d532f072ddda5e99a23e5449dd1cabd5e68 GIT binary patch literal 38068 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

1ztJr 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 literal 0 HcmV?d00001 diff --git a/docs/src/application_configuration/tutorial002.py b/docs/src/application_configuration/tutorial002.py index e4c472376..a45caf7bd 100644 --- a/docs/src/application_configuration/tutorial002.py +++ b/docs/src/application_configuration/tutorial002.py @@ -1,7 +1,7 @@ from fastapi import FastAPI app = FastAPI( - title="My Super Project", version="2.5.0", openapi_url="/api/v1/openapi.json" + openapi_url="/api/v1/openapi.json" ) diff --git a/docs/src/application_configuration/tutorial003.py b/docs/src/application_configuration/tutorial003.py index 4102cfc7d..464be5e35 100644 --- a/docs/src/application_configuration/tutorial003.py +++ b/docs/src/application_configuration/tutorial003.py @@ -1,10 +1,7 @@ from fastapi import FastAPI app = FastAPI( - title="My Super Project", - version="2.5.0", - openapi_url="/api/v1/openapi.json", - docs_url="/api/v1/docs", + docs_url="/documentation", redoc_url=None, ) diff --git a/docs/tutorial/application-configuration.md b/docs/tutorial/application-configuration.md index 296c34272..955423aae 100644 --- a/docs/tutorial/application-configuration.md +++ b/docs/tutorial/application-configuration.md @@ -1,13 +1,51 @@ -Coming soon... +There are several things that you can configure in your FastAPI application. -```Python +## Title, description, and version + +You can set the: + +* Title: used as your API's title/name, in OpenAPI and the automatic API docs UIs. +* Description: the description of your API, in OpenAPI and the automatic API docs UIs. +* Version: the version of your API, e.g. `v2` or `2.5.0`. + * Useful for example if you had a previous version of the application, also using OpenAPI. + +To set them, use the parameters `title`, `description`, and `version`: + +```Python hl_lines="4 5 6" {!./src/application_configuration/tutorial001.py!} ``` -```Python +With this configuration, the automatic API docs would look like: + + + +## OpenAPI URL + +By default, the OpenAPI schema is served at `/openapi.json`. + +But you can configure it with the parameter `openapi_url`. + +For example, to set it to be served at `/api/v1/openapi.json`: + +```Python hl_lines="4" {!./src/application_configuration/tutorial002.py!} ``` -```Python +If you want to disable the OpenAPI schema completely you can set `openapi_url=None`. + +## Docs URLs + +You can configure the two documentation user interfaces included: + +* **Swagger UI**: served at `/docs`. + * You can set its URL with the parameter `docs_url`. + * You can disable it by setting `docs_url=None`. +* ReDoc: served at `/redoc`. + * You can set its URL with the parameter `redoc_url`. + * You can disable it by setting `redoc_url=None`. + +For example, to set Swagger UI to be served at `/documentation` and disable ReDoc: + +```Python hl_lines="4 5" {!./src/application_configuration/tutorial003.py!} ```