From b269655b7f37036d332ce458a6042ec1dfffced7 Mon Sep 17 00:00:00 2001 From: =?utf8?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 zc-rKwz_rLf4ch6eSn*Ge2bDlH1&S&p^p0DrKm53hEKElAjAbP7T{{aI7s~rOa zbN3(6amFckr5LLH0rXZ-=!v^AC^Ig9 zq*q}<^)eXeJ?7p!iC?dtK7Y>K%3c^0g#91{<0tmRHi&_KLWZ~?>M+Ao;N(ymKzQZ8 z^a+YI;-Px>U;C6jv}LhBRn(ia5-Z(N57eV(ERR1dae5M}Apf`hD)SVh_gz$%VkD`y zg^0YwU}paLi zdav+bhkn_o7}5Wc9REXP;lAu^dQd$bI%3o3RA(lT!8bfO^^83lve9#Jxqj8)EK20bAx|R{nXN)Ttyw9oj_m%uU#{Dxv;JY)!pRQm~*E=e*`&LwpIcrg8M)H2B zT-n%yukTp6bQTl-s&ZqajtmygKc0XaF)`Tem<&0fp2-Y=p@QURb?I|Kj<7|pt;~NO1Yi;7| zE2bfJ`2-@1VyddDiub20AUDX9G3|kjk5VO)r>7tEOZ;8(W)0tQ2;SausU$i3yJu2T zEh>m?zCG#DT_7$zw)rl-&V4<{dK0Ey$C#Fu^1(#dOeL>PY3^2Vs7OP3QrY-WMnev0q=(ZGTq zGC%D=8AF6n%7vtP;zR%FV9(ymVu1x4SfQLewPx&hi^te#{kWvlTWS_VqLojXl~MqI#5>LWAq{w^$bgp1UdKO@f0-@rfJFMmG;RzcXAJclWhlk^QV!;3yxqSGRbpPym24Cm&5}nS2$fV391$})Q zdr6;luO_>hDq%Ly5rD0$%nq}N^hC5X?@}LDPysz3xZxqH@5fH$FDL7+nexIoO590sdd*QVCFTE zEc+A2$@zC>7UvU!%0nEz?lGcYnvN=s#BMc5Z;r@PSvOauqCQP!-+bt!R~T|y@IH#; zu_~s}`)fXb@H>2B8RSeEQ+ik&XW1cpp0{r|r_!g=*-&88cKElz zO>QEK{als!9pHc=Q1zcRX9-}=^0_6ae9KNTqzU+$i_;)yB}A;`m$HYUpP?TnY!|$= z0#?lYLP*kUlq~mQ_f;9)ElYHv^Ag=+#BFAA?jz-qQYE+dfhE{uS6@jo#w_sRE7u}i zKJ}E_@o180SA6rqSdvriI=bLok)vHQy}>_FlkHXog=Q#%3jBerYVpct@p_LS3$?(q zh!~K_3Z6Wn&&j$b%E?kAKGtZ0~SQi4t87x{npg86gje8feD7!JrjS-`G9ecy#wx^)dy9b2hV6} zxw9SU+`Rj~hLw80uo6BM6hz1p;k`ZtC%5w%lAEy%o48%6_eAwb+cDVm)jN|11;Clf z?|yUSLG4C+PBb=0M|eHQ4`A+$Wy2VX9HqB`~cp5BGGYEgZ?OrhKt)lYrL601ZbE(%4akQ5<7KavHl% zT_brD9SK7!$Tr*=P$oZz?>re-M|5B*+R`vI#KHOEsq2pShez;3PC-gp+2IJ1`pJ;K z4e?Dt>`K zt5faf=H^BLfIju->s}vZTQI$4WwX@rF1tEUkxylLshmWzMg^jx9ywA6m (bbb>7 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 literal 0 Hc-jL100001 diff --git a/docs/src/application_configuration/tutorial002.py b/docs/src/application_configuration/tutorial002.py index e4c4723766..a45caf7bd6 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 4102cfc7d9..464be5e352 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 296c34272c..955423aae1 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!} ``` -- 2.47.3