]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
📝 Fix admonition double quotes with new syntax (#12835)
authorSebastián Ramírez <tiangolo@gmail.com>
Sat, 9 Nov 2024 16:39:20 +0000 (17:39 +0100)
committerGitHub <noreply@github.com>
Sat, 9 Nov 2024 16:39:20 +0000 (16:39 +0000)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
433 files changed:
docs/de/docs/advanced/additional-responses.md
docs/de/docs/advanced/additional-status-codes.md
docs/de/docs/advanced/advanced-dependencies.md
docs/de/docs/advanced/async-tests.md
docs/de/docs/advanced/behind-a-proxy.md
docs/de/docs/advanced/custom-response.md
docs/de/docs/advanced/events.md
docs/de/docs/advanced/generate-clients.md
docs/de/docs/advanced/index.md
docs/de/docs/advanced/middleware.md
docs/de/docs/advanced/openapi-callbacks.md
docs/de/docs/advanced/path-operation-advanced-configuration.md
docs/de/docs/advanced/response-cookies.md
docs/de/docs/advanced/response-directly.md
docs/de/docs/advanced/response-headers.md
docs/de/docs/advanced/security/index.md
docs/de/docs/advanced/security/oauth2-scopes.md
docs/de/docs/advanced/settings.md
docs/de/docs/advanced/templates.md
docs/de/docs/advanced/testing-dependencies.md
docs/de/docs/advanced/testing-websockets.md
docs/de/docs/advanced/using-request-directly.md
docs/de/docs/advanced/websockets.md
docs/de/docs/alternatives.md
docs/de/docs/async.md
docs/de/docs/contributing.md
docs/de/docs/deployment/concepts.md
docs/de/docs/deployment/docker.md
docs/de/docs/deployment/https.md
docs/de/docs/deployment/manually.md
docs/de/docs/deployment/versions.md
docs/de/docs/help-fastapi.md
docs/de/docs/how-to/custom-docs-ui-assets.md
docs/de/docs/how-to/custom-request-and-route.md
docs/de/docs/how-to/graphql.md
docs/de/docs/how-to/index.md
docs/de/docs/python-types.md
docs/de/docs/tutorial/background-tasks.md
docs/de/docs/tutorial/bigger-applications.md
docs/de/docs/tutorial/body-fields.md
docs/de/docs/tutorial/body-multiple-params.md
docs/de/docs/tutorial/body-nested-models.md
docs/de/docs/tutorial/body-updates.md
docs/de/docs/tutorial/body.md
docs/de/docs/tutorial/cookie-params.md
docs/de/docs/tutorial/dependencies/classes-as-dependencies.md
docs/de/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
docs/de/docs/tutorial/dependencies/dependencies-with-yield.md
docs/de/docs/tutorial/dependencies/global-dependencies.md
docs/de/docs/tutorial/dependencies/index.md
docs/de/docs/tutorial/dependencies/sub-dependencies.md
docs/de/docs/tutorial/encoder.md
docs/de/docs/tutorial/extra-models.md
docs/de/docs/tutorial/first-steps.md
docs/de/docs/tutorial/handling-errors.md
docs/de/docs/tutorial/header-params.md
docs/de/docs/tutorial/index.md
docs/de/docs/tutorial/metadata.md
docs/de/docs/tutorial/middleware.md
docs/de/docs/tutorial/path-operation-configuration.md
docs/de/docs/tutorial/path-params-numeric-validations.md
docs/de/docs/tutorial/path-params.md
docs/de/docs/tutorial/query-params-str-validations.md
docs/de/docs/tutorial/query-params.md
docs/de/docs/tutorial/request-files.md
docs/de/docs/tutorial/request-forms-and-files.md
docs/de/docs/tutorial/request-forms.md
docs/de/docs/tutorial/response-model.md
docs/de/docs/tutorial/response-status-code.md
docs/de/docs/tutorial/schema-extra-example.md
docs/de/docs/tutorial/security/first-steps.md
docs/de/docs/tutorial/security/get-current-user.md
docs/de/docs/tutorial/security/index.md
docs/de/docs/tutorial/security/oauth2-jwt.md
docs/de/docs/tutorial/security/simple-oauth2.md
docs/de/docs/tutorial/static-files.md
docs/de/docs/tutorial/testing.md
docs/em/docs/advanced/additional-status-codes.md
docs/em/docs/advanced/behind-a-proxy.md
docs/em/docs/advanced/custom-response.md
docs/em/docs/advanced/middleware.md
docs/em/docs/advanced/path-operation-advanced-configuration.md
docs/em/docs/advanced/response-cookies.md
docs/em/docs/advanced/response-directly.md
docs/em/docs/advanced/response-headers.md
docs/em/docs/advanced/security/oauth2-scopes.md
docs/em/docs/advanced/templates.md
docs/em/docs/advanced/using-request-directly.md
docs/em/docs/advanced/websockets.md
docs/em/docs/alternatives.md
docs/em/docs/how-to/custom-request-and-route.md
docs/em/docs/tutorial/bigger-applications.md
docs/em/docs/tutorial/body-fields.md
docs/em/docs/tutorial/cookie-params.md
docs/em/docs/tutorial/cors.md
docs/em/docs/tutorial/dependencies/dependencies-with-yield.md
docs/em/docs/tutorial/first-steps.md
docs/em/docs/tutorial/handling-errors.md
docs/em/docs/tutorial/header-params.md
docs/em/docs/tutorial/middleware.md
docs/em/docs/tutorial/path-operation-configuration.md
docs/em/docs/tutorial/path-params-numeric-validations.md
docs/em/docs/tutorial/request-files.md
docs/em/docs/tutorial/request-forms.md
docs/em/docs/tutorial/response-status-code.md
docs/em/docs/tutorial/security/first-steps.md
docs/em/docs/tutorial/sql-databases.md
docs/em/docs/tutorial/static-files.md
docs/em/docs/tutorial/testing.md
docs/en/docs/advanced/additional-status-codes.md
docs/en/docs/advanced/behind-a-proxy.md
docs/en/docs/advanced/custom-response.md
docs/en/docs/advanced/middleware.md
docs/en/docs/advanced/path-operation-advanced-configuration.md
docs/en/docs/advanced/response-cookies.md
docs/en/docs/advanced/response-directly.md
docs/en/docs/advanced/response-headers.md
docs/en/docs/advanced/security/oauth2-scopes.md
docs/en/docs/advanced/templates.md
docs/en/docs/advanced/using-request-directly.md
docs/en/docs/advanced/websockets.md
docs/en/docs/alternatives.md
docs/en/docs/contributing.md
docs/en/docs/how-to/custom-request-and-route.md
docs/en/docs/management-tasks.md
docs/en/docs/tutorial/bigger-applications.md
docs/en/docs/tutorial/body-fields.md
docs/en/docs/tutorial/cookie-params.md
docs/en/docs/tutorial/cors.md
docs/en/docs/tutorial/dependencies/dependencies-with-yield.md
docs/en/docs/tutorial/first-steps.md
docs/en/docs/tutorial/handling-errors.md
docs/en/docs/tutorial/header-params.md
docs/en/docs/tutorial/middleware.md
docs/en/docs/tutorial/path-operation-configuration.md
docs/en/docs/tutorial/path-params-numeric-validations.md
docs/en/docs/tutorial/request-files.md
docs/en/docs/tutorial/request-forms.md
docs/en/docs/tutorial/response-status-code.md
docs/en/docs/tutorial/security/first-steps.md
docs/en/docs/tutorial/static-files.md
docs/en/docs/tutorial/testing.md
docs/es/docs/advanced/path-operation-advanced-configuration.md
docs/es/docs/tutorial/cookie-params.md
docs/es/docs/tutorial/index.md
docs/fa/docs/tutorial/middleware.md
docs/fr/docs/advanced/additional-responses.md
docs/fr/docs/advanced/additional-status-codes.md
docs/fr/docs/advanced/index.md
docs/fr/docs/advanced/path-operation-advanced-configuration.md
docs/fr/docs/advanced/response-directly.md
docs/fr/docs/alternatives.md
docs/fr/docs/async.md
docs/fr/docs/deployment/docker.md
docs/fr/docs/deployment/manually.md
docs/fr/docs/deployment/versions.md
docs/fr/docs/python-types.md
docs/fr/docs/tutorial/body.md
docs/fr/docs/tutorial/first-steps.md
docs/fr/docs/tutorial/path-params-numeric-validations.md
docs/fr/docs/tutorial/path-params.md
docs/fr/docs/tutorial/query-params-str-validations.md
docs/fr/docs/tutorial/query-params.md
docs/id/docs/tutorial/index.md
docs/ja/docs/advanced/additional-status-codes.md
docs/ja/docs/advanced/custom-response.md
docs/ja/docs/advanced/index.md
docs/ja/docs/advanced/path-operation-advanced-configuration.md
docs/ja/docs/advanced/response-directly.md
docs/ja/docs/advanced/websockets.md
docs/ja/docs/alternatives.md
docs/ja/docs/async.md
docs/ja/docs/contributing.md
docs/ja/docs/deployment/manually.md
docs/ja/docs/deployment/versions.md
docs/ja/docs/features.md
docs/ja/docs/python-types.md
docs/ja/docs/tutorial/body-fields.md
docs/ja/docs/tutorial/body-multiple-params.md
docs/ja/docs/tutorial/body-nested-models.md
docs/ja/docs/tutorial/body-updates.md
docs/ja/docs/tutorial/body.md
docs/ja/docs/tutorial/cookie-params.md
docs/ja/docs/tutorial/cors.md
docs/ja/docs/tutorial/debugging.md
docs/ja/docs/tutorial/dependencies/classes-as-dependencies.md
docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
docs/ja/docs/tutorial/dependencies/index.md
docs/ja/docs/tutorial/dependencies/sub-dependencies.md
docs/ja/docs/tutorial/encoder.md
docs/ja/docs/tutorial/extra-models.md
docs/ja/docs/tutorial/first-steps.md
docs/ja/docs/tutorial/handling-errors.md
docs/ja/docs/tutorial/header-params.md
docs/ja/docs/tutorial/index.md
docs/ja/docs/tutorial/metadata.md
docs/ja/docs/tutorial/middleware.md
docs/ja/docs/tutorial/path-operation-configuration.md
docs/ja/docs/tutorial/path-params-numeric-validations.md
docs/ja/docs/tutorial/path-params.md
docs/ja/docs/tutorial/query-params-str-validations.md
docs/ja/docs/tutorial/query-params.md
docs/ja/docs/tutorial/request-forms-and-files.md
docs/ja/docs/tutorial/request-forms.md
docs/ja/docs/tutorial/response-model.md
docs/ja/docs/tutorial/response-status-code.md
docs/ja/docs/tutorial/schema-extra-example.md
docs/ja/docs/tutorial/security/first-steps.md
docs/ja/docs/tutorial/security/get-current-user.md
docs/ja/docs/tutorial/security/index.md
docs/ja/docs/tutorial/security/oauth2-jwt.md
docs/ja/docs/tutorial/static-files.md
docs/ja/docs/tutorial/testing.md
docs/ko/docs/advanced/events.md
docs/ko/docs/advanced/index.md
docs/ko/docs/advanced/response-cookies.md
docs/ko/docs/advanced/response-directly.md
docs/ko/docs/advanced/response-headers.md
docs/ko/docs/async.md
docs/ko/docs/deployment/docker.md
docs/ko/docs/deployment/server-workers.md
docs/ko/docs/deployment/versions.md
docs/ko/docs/environment-variables.md
docs/ko/docs/features.md
docs/ko/docs/python-types.md
docs/ko/docs/tutorial/body-fields.md
docs/ko/docs/tutorial/body-multiple-params.md
docs/ko/docs/tutorial/body-nested-models.md
docs/ko/docs/tutorial/body.md
docs/ko/docs/tutorial/cookie-params.md
docs/ko/docs/tutorial/cors.md
docs/ko/docs/tutorial/debugging.md
docs/ko/docs/tutorial/dependencies/classes-as-dependencies.md
docs/ko/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
docs/ko/docs/tutorial/dependencies/global-dependencies.md
docs/ko/docs/tutorial/dependencies/index.md
docs/ko/docs/tutorial/encoder.md
docs/ko/docs/tutorial/first-steps.md
docs/ko/docs/tutorial/header-params.md
docs/ko/docs/tutorial/index.md
docs/ko/docs/tutorial/middleware.md
docs/ko/docs/tutorial/path-operation-configuration.md
docs/ko/docs/tutorial/path-params-numeric-validations.md
docs/ko/docs/tutorial/path-params.md
docs/ko/docs/tutorial/query-params-str-validations.md
docs/ko/docs/tutorial/query-params.md
docs/ko/docs/tutorial/request-files.md
docs/ko/docs/tutorial/request-forms-and-files.md
docs/ko/docs/tutorial/response-model.md
docs/ko/docs/tutorial/response-status-code.md
docs/ko/docs/tutorial/schema-extra-example.md
docs/ko/docs/tutorial/security/get-current-user.md
docs/ko/docs/tutorial/static-files.md
docs/pl/docs/help-fastapi.md
docs/pl/docs/tutorial/first-steps.md
docs/pt/docs/advanced/additional-responses.md
docs/pt/docs/advanced/additional-status-codes.md
docs/pt/docs/advanced/advanced-dependencies.md
docs/pt/docs/advanced/async-tests.md
docs/pt/docs/advanced/behind-a-proxy.md
docs/pt/docs/advanced/events.md
docs/pt/docs/advanced/index.md
docs/pt/docs/advanced/openapi-webhooks.md
docs/pt/docs/advanced/response-cookies.md
docs/pt/docs/advanced/response-headers.md
docs/pt/docs/advanced/security/http-basic-auth.md
docs/pt/docs/advanced/security/index.md
docs/pt/docs/advanced/security/oauth2-scopes.md
docs/pt/docs/advanced/templates.md
docs/pt/docs/advanced/testing-dependencies.md
docs/pt/docs/advanced/testing-websockets.md
docs/pt/docs/advanced/using-request-directly.md
docs/pt/docs/alternatives.md
docs/pt/docs/deployment/concepts.md
docs/pt/docs/deployment/docker.md
docs/pt/docs/deployment/https.md
docs/pt/docs/deployment/manually.md
docs/pt/docs/deployment/server-workers.md
docs/pt/docs/deployment/versions.md
docs/pt/docs/environment-variables.md
docs/pt/docs/help-fastapi.md
docs/pt/docs/how-to/graphql.md
docs/pt/docs/tutorial/bigger-applications.md
docs/pt/docs/tutorial/body-fields.md
docs/pt/docs/tutorial/body-multiple-params.md
docs/pt/docs/tutorial/body-nested-models.md
docs/pt/docs/tutorial/body.md
docs/pt/docs/tutorial/cors.md
docs/pt/docs/tutorial/debugging.md
docs/pt/docs/tutorial/dependencies/classes-as-dependencies.md
docs/pt/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
docs/pt/docs/tutorial/dependencies/dependencies-with-yield.md
docs/pt/docs/tutorial/dependencies/global-dependencies.md
docs/pt/docs/tutorial/dependencies/index.md
docs/pt/docs/tutorial/dependencies/sub-dependencies.md
docs/pt/docs/tutorial/encoder.md
docs/pt/docs/tutorial/first-steps.md
docs/pt/docs/tutorial/handling-errors.md
docs/pt/docs/tutorial/header-params.md
docs/pt/docs/tutorial/index.md
docs/pt/docs/tutorial/middleware.md
docs/pt/docs/tutorial/path-operation-configuration.md
docs/pt/docs/tutorial/path-params-numeric-validations.md
docs/pt/docs/tutorial/path-params.md
docs/pt/docs/tutorial/query-params-str-validations.md
docs/pt/docs/tutorial/query-params.md
docs/pt/docs/tutorial/request-files.md
docs/pt/docs/tutorial/request-form-models.md
docs/pt/docs/tutorial/request-forms-and-files.md
docs/pt/docs/tutorial/request-forms.md
docs/pt/docs/tutorial/response-status-code.md
docs/pt/docs/tutorial/schema-extra-example.md
docs/pt/docs/tutorial/security/first-steps.md
docs/pt/docs/tutorial/security/index.md
docs/pt/docs/tutorial/static-files.md
docs/pt/docs/tutorial/testing.md
docs/pt/docs/virtual-environments.md
docs/ru/docs/alternatives.md
docs/ru/docs/contributing.md
docs/ru/docs/deployment/concepts.md
docs/ru/docs/deployment/docker.md
docs/ru/docs/deployment/https.md
docs/ru/docs/deployment/manually.md
docs/ru/docs/deployment/versions.md
docs/ru/docs/features.md
docs/ru/docs/help-fastapi.md
docs/ru/docs/tutorial/body-fields.md
docs/ru/docs/tutorial/body-multiple-params.md
docs/ru/docs/tutorial/body-nested-models.md
docs/ru/docs/tutorial/body-updates.md
docs/ru/docs/tutorial/body.md
docs/ru/docs/tutorial/cookie-params.md
docs/ru/docs/tutorial/cors.md
docs/ru/docs/tutorial/debugging.md
docs/ru/docs/tutorial/dependencies/classes-as-dependencies.md
docs/ru/docs/tutorial/dependencies/dependencies-with-yield.md
docs/ru/docs/tutorial/dependencies/global-dependencies.md
docs/ru/docs/tutorial/dependencies/index.md
docs/ru/docs/tutorial/dependencies/sub-dependencies.md
docs/ru/docs/tutorial/encoder.md
docs/ru/docs/tutorial/extra-models.md
docs/ru/docs/tutorial/first-steps.md
docs/ru/docs/tutorial/handling-errors.md
docs/ru/docs/tutorial/header-params.md
docs/ru/docs/tutorial/index.md
docs/ru/docs/tutorial/metadata.md
docs/ru/docs/tutorial/path-operation-configuration.md
docs/ru/docs/tutorial/path-params-numeric-validations.md
docs/ru/docs/tutorial/path-params.md
docs/ru/docs/tutorial/query-params-str-validations.md
docs/ru/docs/tutorial/query-params.md
docs/ru/docs/tutorial/request-files.md
docs/ru/docs/tutorial/request-forms-and-files.md
docs/ru/docs/tutorial/request-forms.md
docs/ru/docs/tutorial/response-model.md
docs/ru/docs/tutorial/response-status-code.md
docs/ru/docs/tutorial/security/first-steps.md
docs/ru/docs/tutorial/security/index.md
docs/ru/docs/tutorial/static-files.md
docs/ru/docs/tutorial/testing.md
docs/tr/docs/advanced/index.md
docs/tr/docs/advanced/security/index.md
docs/tr/docs/advanced/testing-websockets.md
docs/tr/docs/alternatives.md
docs/tr/docs/async.md
docs/tr/docs/how-to/index.md
docs/tr/docs/python-types.md
docs/tr/docs/tutorial/cookie-params.md
docs/tr/docs/tutorial/first-steps.md
docs/tr/docs/tutorial/path-params.md
docs/tr/docs/tutorial/query-params.md
docs/tr/docs/tutorial/request-forms.md
docs/tr/docs/tutorial/static-files.md
docs/uk/docs/alternatives.md
docs/uk/docs/tutorial/body-fields.md
docs/uk/docs/tutorial/cookie-params.md
docs/uk/docs/tutorial/encoder.md
docs/uk/docs/tutorial/first-steps.md
docs/vi/docs/tutorial/first-steps.md
docs/zh/docs/advanced/additional-status-codes.md
docs/zh/docs/advanced/advanced-dependencies.md
docs/zh/docs/advanced/behind-a-proxy.md
docs/zh/docs/advanced/custom-response.md
docs/zh/docs/advanced/dataclasses.md
docs/zh/docs/advanced/events.md
docs/zh/docs/advanced/middleware.md
docs/zh/docs/advanced/openapi-callbacks.md
docs/zh/docs/advanced/response-cookies.md
docs/zh/docs/advanced/response-directly.md
docs/zh/docs/advanced/response-headers.md
docs/zh/docs/advanced/security/index.md
docs/zh/docs/advanced/security/oauth2-scopes.md
docs/zh/docs/advanced/templates.md
docs/zh/docs/advanced/testing-dependencies.md
docs/zh/docs/advanced/testing-websockets.md
docs/zh/docs/advanced/using-request-directly.md
docs/zh/docs/advanced/websockets.md
docs/zh/docs/contributing.md
docs/zh/docs/fastapi-cli.md
docs/zh/docs/help-fastapi.md
docs/zh/docs/tutorial/bigger-applications.md
docs/zh/docs/tutorial/body-fields.md
docs/zh/docs/tutorial/body-updates.md
docs/zh/docs/tutorial/body.md
docs/zh/docs/tutorial/cookie-params.md
docs/zh/docs/tutorial/cors.md
docs/zh/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md
docs/zh/docs/tutorial/dependencies/index.md
docs/zh/docs/tutorial/dependencies/sub-dependencies.md
docs/zh/docs/tutorial/extra-models.md
docs/zh/docs/tutorial/first-steps.md
docs/zh/docs/tutorial/handling-errors.md
docs/zh/docs/tutorial/header-params.md
docs/zh/docs/tutorial/metadata.md
docs/zh/docs/tutorial/middleware.md
docs/zh/docs/tutorial/path-operation-configuration.md
docs/zh/docs/tutorial/path-params-numeric-validations.md
docs/zh/docs/tutorial/path-params.md
docs/zh/docs/tutorial/query-params.md
docs/zh/docs/tutorial/request-files.md
docs/zh/docs/tutorial/request-forms-and-files.md
docs/zh/docs/tutorial/request-forms.md
docs/zh/docs/tutorial/response-model.md
docs/zh/docs/tutorial/response-status-code.md
docs/zh/docs/tutorial/security/first-steps.md
docs/zh/docs/tutorial/security/get-current-user.md
docs/zh/docs/tutorial/security/oauth2-jwt.md
docs/zh/docs/tutorial/security/simple-oauth2.md
docs/zh/docs/tutorial/sql-databases.md
docs/zh/docs/tutorial/static-files.md
docs/zh/docs/tutorial/testing.md

index a87c564910043565628c2dac3bcfb2cf7b23cabc..29a7b064a777e8e9a4b38f1c8b3c4a3bc824aa19 100644 (file)
@@ -1,6 +1,6 @@
 # Zusätzliche Responses in OpenAPI
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Dies ist ein eher fortgeschrittenes Thema.
 
@@ -30,7 +30,7 @@ Um beispielsweise eine weitere Response mit dem Statuscode `404` und einem Pydan
 {!../../docs_src/additional_responses/tutorial001.py!}
 ```
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass Sie die `JSONResponse` direkt zurückgeben müssen.
 
@@ -181,7 +181,7 @@ Sie können beispielsweise einen zusätzlichen Medientyp `image/png` hinzufügen
 {!../../docs_src/additional_responses/tutorial002.py!}
 ```
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass Sie das Bild direkt mit einer `FileResponse` zurückgeben müssen.
 
index fc8d09e4cefb0e5f625bb7ca7bce289b4f971177..50702e7e6edc59084da62a13dcfdc6ee5e89d38c 100644 (file)
@@ -40,7 +40,7 @@ Um dies zu erreichen, importieren Sie `JSONResponse`, und geben Sie Ihren Inhalt
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -54,7 +54,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -66,7 +66,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Wenn Sie eine `Response` direkt zurückgeben, wie im obigen Beispiel, wird sie direkt zurückgegeben.
 
@@ -76,7 +76,7 @@ Stellen Sie sicher, dass sie die gewünschten Daten enthält und dass die Werte
 
 ///
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.responses import JSONResponse` verwenden.
 
index 54351714e396b731104afe400d005f9026483e2a..80cbf1fd369c4f99078207516b321dc41615b185 100644 (file)
@@ -36,7 +36,7 @@ Dazu deklarieren wir eine Methode `__call__`:
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -72,7 +72,7 @@ Und jetzt können wir `__init__` verwenden, um die Parameter der Instanz zu dekl
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -108,7 +108,7 @@ Wir könnten eine Instanz dieser Klasse erstellen mit:
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -152,7 +152,7 @@ checker(q="somequery")
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -164,7 +164,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Das alles mag gekünstelt wirken. Und es ist möglicherweise noch nicht ganz klar, welchen Nutzen das hat.
 
index 6c1981e255b2f1781268b42058b40daf4a2fb4dc..c118e588faaeb79ec0c8bfcbaa5d01c253b9189c 100644 (file)
@@ -62,7 +62,7 @@ Der Marker `@pytest.mark.anyio` teilt pytest mit, dass diese Testfunktion asynch
 
 {* ../../docs_src/async_tests/test_main.py hl[7] *}
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass die Testfunktion jetzt `async def` ist und nicht nur `def` wie zuvor, wenn Sie den `TestClient` verwenden.
 
@@ -80,13 +80,13 @@ response = client.get('/')
 
 ... welches wir verwendet haben, um unsere Requests mit dem `TestClient` zu machen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass wir async/await mit dem neuen `AsyncClient` verwenden – der Request ist asynchron.
 
 ///
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Falls Ihre Anwendung auf Lifespan-Events angewiesen ist, der `AsyncClient` löst diese Events nicht aus. Um sicherzustellen, dass sie ausgelöst werden, verwenden Sie `LifespanManager` von <a href="https://github.com/florimondmanca/asgi-lifespan#usage" class="external-link" target="_blank">florimondmanca/asgi-lifespan</a>.
 
@@ -96,7 +96,7 @@ Falls Ihre Anwendung auf Lifespan-Events angewiesen ist, der `AsyncClient` löst
 
 Da die Testfunktion jetzt asynchron ist, können Sie in Ihren Tests neben dem Senden von Requests an Ihre FastAPI-Anwendung jetzt auch andere `async`hrone Funktionen aufrufen (und `await`en), genau so, wie Sie diese an anderer Stelle in Ihrem Code aufrufen würden.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie einen `RuntimeError: Task attached to a different loop` erhalten, wenn Sie asynchrone Funktionsaufrufe in Ihre Tests integrieren (z. B. bei Verwendung von <a href="https://stackoverflow.com/questions/41584243/runtimeerror-task-attached-to-a-different-loop" class="external-link" target="_blank">MongoDBs MotorClient</a>), dann denken Sie daran, Objekte zu instanziieren, die einen Event Loop nur innerhalb asynchroner Funktionen benötigen, z. B. einen `@app.on_event("startup")`-Callback.
 
index 74b25308a8b6126f3d27d0bb928532aa1e85fc16..9da18a6260be4780485dffc3bcb415264c3c6df0 100644 (file)
@@ -43,7 +43,7 @@ browser --> proxy
 proxy --> server
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die IP `0.0.0.0` wird üblicherweise verwendet, um anzudeuten, dass das Programm alle auf diesem Computer/Server verfügbaren IPs abhört.
 
@@ -84,7 +84,7 @@ $ uvicorn main:app --root-path /api/v1
 
 Falls Sie Hypercorn verwenden, das hat auch die Option `--root-path`.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Die ASGI-Spezifikation definiert einen `root_path` für diesen Anwendungsfall.
 
@@ -178,7 +178,7 @@ Dann erstellen Sie eine Datei `traefik.toml` mit:
 
 Dadurch wird Traefik angewiesen, Port 9999 abzuhören und eine andere Datei `routes.toml` zu verwenden.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wir verwenden Port 9999 anstelle des Standard-HTTP-Ports 80, damit Sie ihn nicht mit Administratorrechten (`sudo`) ausführen müssen.
 
@@ -248,7 +248,7 @@ Wenn Sie nun zur URL mit dem Port für Uvicorn gehen: <a href="http://127.0.0.1:
 }
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass, obwohl Sie unter `http://127.0.0.1:8000/app` darauf zugreifen, als `root_path` angezeigt wird `/api/v1`, welches aus der Option `--root-path` stammt.
 
@@ -295,7 +295,7 @@ Dies liegt daran, dass FastAPI diesen `root_path` verwendet, um den Default-`ser
 
 ## Zusätzliche Server
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Dies ist ein fortgeschrittener Anwendungsfall. Überspringen Sie das gerne.
 
@@ -338,7 +338,7 @@ Erzeugt ein OpenAPI-Schema, wie:
 }
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie den automatisch generierten Server mit dem `URL`-Wert `/api/v1`, welcher vom `root_path` stammt.
 
@@ -348,7 +348,7 @@ In der Dokumentationsoberfläche unter <a href="http://127.0.0.1:9999/api/v1/doc
 
 <img src="/img/tutorial/behind-a-proxy/image03.png">
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die Dokumentationsoberfläche interagiert mit dem von Ihnen ausgewählten Server.
 
index 357d2c5629ab9b6424d3d57a5c8051a1185095a0..7738bfca431d6001fb3702d3c8e9f0b654d9b1c5 100644 (file)
@@ -12,7 +12,7 @@ Der Inhalt, den Sie von Ihrer *Pfadoperation-Funktion* zurückgeben, wird in die
 
 Und wenn diese `Response` einen JSON-Medientyp (`application/json`) hat, wie es bei `JSONResponse` und `UJSONResponse` der Fall ist, werden die von Ihnen zurückgegebenen Daten automatisch mit jedem Pydantic `response_model` konvertiert (und gefiltert), das Sie im *Pfadoperation-Dekorator* deklariert haben.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Wenn Sie eine Response-Klasse ohne Medientyp verwenden, erwartet FastAPI, dass Ihre Response keinen Inhalt hat, und dokumentiert daher das Format der Response nicht in deren generierter OpenAPI-Dokumentation.
 
@@ -44,7 +44,7 @@ Und er wird als solcher in OpenAPI dokumentiert.
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die `ORJSONResponse` ist derzeit nur in FastAPI verfügbar, nicht in Starlette.
 
@@ -81,7 +81,7 @@ Das gleiche Beispiel von oben, das eine `HTMLResponse` zurückgibt, könnte so a
 {!../../docs_src/custom_response/tutorial003.py!}
 ```
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Eine `Response`, die direkt von Ihrer *Pfadoperation-Funktion* zurückgegeben wird, wird in OpenAPI nicht dokumentiert (zum Beispiel wird der `Content-Type` nicht dokumentiert) und ist in der automatischen interaktiven Dokumentation nicht sichtbar.
 
@@ -121,7 +121,7 @@ Hier sind einige der verfügbaren Responses.
 
 Bedenken Sie, dass Sie `Response` verwenden können, um alles andere zurückzugeben, oder sogar eine benutzerdefinierte Unterklasse zu erstellen.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.responses import HTMLResponse` verwenden.
 
@@ -174,7 +174,7 @@ Eine schnelle alternative JSON-Response mit <a href="https://github.com/ijl/orjs
 
 Eine alternative JSON-Response mit <a href="https://github.com/ultrajson/ultrajson" class="external-link" target="_blank">`ujson`</a>.
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 `ujson` ist bei der Behandlung einiger Sonderfälle weniger sorgfältig als Pythons eingebaute Implementierung.
 
@@ -184,7 +184,7 @@ Eine alternative JSON-Response mit <a href="https://github.com/ultrajson/ultrajs
 {!../../docs_src/custom_response/tutorial001.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Möglicherweise ist `ORJSONResponse` eine schnellere Alternative.
 
@@ -249,7 +249,7 @@ Das umfasst viele Bibliotheken zur Interaktion mit Cloud-Speicher, Videoverarbei
 
     Auf diese Weise können wir das Ganze in einen `with`-Block einfügen und so sicherstellen, dass das dateiartige Objekt nach Abschluss geschlossen wird.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass wir, da wir Standard-`open()` verwenden, welches `async` und `await` nicht unterstützt, hier die Pfadoperation mit normalen `def` deklarieren.
 
@@ -322,7 +322,7 @@ Im folgenden Beispiel verwendet **FastAPI** standardmäßig `ORJSONResponse` in
 {!../../docs_src/custom_response/tutorial010.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können dennoch weiterhin `response_class` in *Pfadoperationen* überschreiben, wie bisher.
 
index b0c4d3922c4e42b7dca81aaa4f028cdf1a11e31c..cae53091c2d19548585dc7a92a9cfeb768c90c30 100644 (file)
@@ -38,7 +38,7 @@ Hier simulieren wir das langsame *Hochfahren*, das Laden des Modells, indem wir
 
 Und dann, direkt nach dem `yield`, entladen wir das Modell. Dieser Code wird unmittelbar vor dem *Herunterfahren* ausgeführt, **nachdem** die Anwendung **die Bearbeitung von Requests abgeschlossen hat**. Dadurch könnten beispielsweise Ressourcen wie Arbeitsspeicher oder eine GPU freigegeben werden.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Das *Herunterfahren* würde erfolgen, wenn Sie die Anwendung **stoppen**.
 
@@ -94,7 +94,7 @@ Der Parameter `lifespan` der `FastAPI`-App benötigt einen **asynchronen Kontext
 
 ## Alternative Events (deprecated)
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Der empfohlene Weg, das *Hochfahren* und *Herunterfahren* zu handhaben, ist die Verwendung des `lifespan`-Parameters der `FastAPI`-App, wie oben beschrieben. Wenn Sie einen `lifespan`-Parameter übergeben, werden die `startup`- und `shutdown`-Eventhandler nicht mehr aufgerufen. Es ist entweder alles `lifespan` oder alles Events, nicht beides.
 
@@ -138,7 +138,7 @@ In der Funktion `open()` bedeutet `mode="a"` „append“ („anhängen“), sod
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass wir in diesem Fall eine Standard-Python-Funktion `open()` verwenden, die mit einer Datei interagiert.
 
index 80c44b3f965637b01eb3d895fffb08f004a6c819..8f71e5419d754a068b3f133749331232e5004bb7 100644 (file)
@@ -127,7 +127,7 @@ Sie erhalten außerdem automatische Vervollständigung für die zu sendende Payl
 
 <img src="/img/tutorial/generate-clients/image03.png">
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie die automatische Vervollständigung für `name` und `price`, welche in der FastAPI-Anwendung im `Item`-Modell definiert wurden.
 
index 953ad317d6b3cc9e2e4abed0536272e3ec1968d1..d93cd5fe82ded73597d17e505a88612b9cf8f0df 100644 (file)
@@ -6,7 +6,7 @@ Das Haupt-[Tutorial – Benutzerhandbuch](../tutorial/index.md){.internal-link t
 
 In den nächsten Abschnitten sehen Sie weitere Optionen, Konfigurationen und zusätzliche Funktionen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die nächsten Abschnitte sind **nicht unbedingt „fortgeschritten“**.
 
index b4001efda7a1904ea8053e15cc34f3dc82859201..d2130c9b729acb4004a0f164647298182b532507 100644 (file)
@@ -43,7 +43,7 @@ app.add_middleware(UnicornMiddleware, some_config="rainbow")
 
 **FastAPI** enthält mehrere Middlewares für gängige Anwendungsfälle. Wir werden als Nächstes sehen, wie man sie verwendet.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Für die nächsten Beispiele könnten Sie auch `from starlette.middleware.something import SomethingMiddleware` verwenden.
 
index f407d54507f97d6f2712d8ffceb2660130b5e686..4ee2874a3107f80c1b7a60eaeed34c6a2b62e1cb 100644 (file)
@@ -35,7 +35,7 @@ Dieser Teil ist ziemlich normal, der größte Teil des Codes ist Ihnen wahrschei
 {!../../docs_src/openapi_callbacks/tutorial001.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Der Query-Parameter `callback_url` verwendet einen Pydantic-<a href="https://docs.pydantic.dev/latest/api/networks/" class="external-link" target="_blank">Url</a>-Typ.
 
@@ -64,7 +64,7 @@ Diese Dokumentation wird in der Swagger-Oberfläche unter `/docs` in Ihrer API a
 
 In diesem Beispiel wird nicht der Callback selbst implementiert (das könnte nur eine Codezeile sein), sondern nur der Dokumentationsteil.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Der eigentliche Callback ist nur ein HTTP-Request.
 
@@ -80,7 +80,7 @@ Sie wissen jedoch bereits, wie Sie mit **FastAPI** ganz einfach eine automatisch
 
 Daher werden wir dasselbe Wissen nutzen, um zu dokumentieren, wie die *externe API* aussehen sollte ... indem wir die *Pfadoperation(en)* erstellen, welche die externe API implementieren soll (die, welche Ihre API aufruft).
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie den Code zum Dokumentieren eines Callbacks schreiben, kann es hilfreich sein, sich vorzustellen, dass Sie dieser *externe Entwickler* sind. Und dass Sie derzeit die *externe API* implementieren, nicht *Ihre API*.
 
@@ -163,7 +163,7 @@ und sie würde eine Response von dieser *externen API* mit einem JSON-Body wie d
 }
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass die verwendete Callback-URL die URL enthält, die als Query-Parameter in `callback_url` (`https://www.external.org/events`) empfangen wurde, und auch die Rechnungs-`id` aus dem JSON-Body (`2expen51ve`).
 
@@ -179,7 +179,7 @@ Verwenden Sie nun den Parameter `callbacks` im *Pfadoperation-Dekorator Ihrer AP
 {!../../docs_src/openapi_callbacks/tutorial001.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass Sie nicht den Router selbst (`invoices_callback_router`) an `callback=` übergeben, sondern das Attribut `.routes`, wie in `invoices_callback_router.routes`.
 
index 2d8b88be585d18c769bb0f493cb53c18d6490d3e..53d3957243b3bed3a56025f09cdc633e03256d03 100644 (file)
@@ -2,7 +2,7 @@
 
 ## OpenAPI operationId
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Wenn Sie kein „Experte“ für OpenAPI sind, brauchen Sie dies wahrscheinlich nicht.
 
@@ -26,13 +26,13 @@ Sie sollten dies tun, nachdem Sie alle Ihre *Pfadoperationen* hinzugefügt haben
 {!../../docs_src/path_operation_advanced_configuration/tutorial002.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie `app.openapi()` manuell aufrufen, sollten Sie vorher die `operationId`s aktualisiert haben.
 
 ///
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Wenn Sie dies tun, müssen Sie sicherstellen, dass jede Ihrer *Pfadoperation-Funktionen* einen eindeutigen Namen hat.
 
@@ -74,7 +74,7 @@ Es gibt hier in der Dokumentation ein ganzes Kapitel darüber, Sie können es un
 
 Wenn Sie in Ihrer Anwendung eine *Pfadoperation* deklarieren, generiert **FastAPI** automatisch die relevanten Metadaten dieser *Pfadoperation*, die in das OpenAPI-Schema aufgenommen werden sollen.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 In der OpenAPI-Spezifikation wird das <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object" class="external-link" target="_blank">Operationsobjekt</a> genannt.
 
@@ -86,7 +86,7 @@ Es enthält `tags`, `parameters`, `requestBody`, `responses`, usw.
 
 Dieses *Pfadoperation*-spezifische OpenAPI-Schema wird normalerweise automatisch von **FastAPI** generiert, Sie können es aber auch erweitern.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Dies ist ein Low-Level Erweiterungspunkt.
 
@@ -215,7 +215,7 @@ In Pydantic Version 1 war die Methode zum Parsen und Validieren eines Objekts `I
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Hier verwenden wir dasselbe Pydantic-Modell wieder.
 
index ba100870daf09a900e07df08a0f9e73667c7bc5d..6f9d66e07585c6b56d2ecd61d607c4b337f982cb 100644 (file)
@@ -30,7 +30,7 @@ Setzen Sie dann Cookies darin und geben Sie sie dann zurück:
 {!../../docs_src/response_cookies/tutorial001.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass, wenn Sie eine Response direkt zurückgeben, anstatt den `Response`-Parameter zu verwenden, FastAPI diese direkt zurückgibt.
 
@@ -42,7 +42,7 @@ Und auch, dass Sie keine Daten senden, die durch ein `response_model` hätten ge
 
 ### Mehr Informationen
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.responses import Response` oder `from starlette.responses import JSONResponse` verwenden.
 
index 70c045f57432baf685af3264fd212ebabb9642a8..fab2e3965a7d781767a3cb9086f32c0cd320511b 100644 (file)
@@ -14,7 +14,7 @@ Das kann beispielsweise nützlich sein, um benutzerdefinierte Header oder Cookie
 
 Tatsächlich können Sie jede `Response` oder jede Unterklasse davon zurückgeben.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 `JSONResponse` selbst ist eine Unterklasse von `Response`.
 
@@ -38,7 +38,7 @@ In diesen Fällen können Sie den `jsonable_encoder` verwenden, um Ihre Daten zu
 {!../../docs_src/response_directly/tutorial001.py!}
 ```
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.responses import JSONResponse` verwenden.
 
index 31c2c9c986ac30b931ead64fa9f3694c7cec7f97..ca1a28fa41f727e6796b4826bb127df74f6e3ee5 100644 (file)
@@ -28,7 +28,7 @@ Erstellen Sie eine Response wie in [Eine Response direkt zurückgeben](response-
 {!../../docs_src/response_headers/tutorial001.py!}
 ```
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.responses import Response` oder `from starlette.responses import JSONResponse` verwenden.
 
index 380e48bbf41303bed5e6f49209a722b2b15a0669..25eeb25b56f8487dd4df72e2196a794a63ada7c0 100644 (file)
@@ -4,7 +4,7 @@
 
 Neben den in [Tutorial – Benutzerhandbuch: Sicherheit](../../tutorial/security/index.md){.internal-link target=_blank} behandelten Funktionen gibt es noch einige zusätzliche Funktionen zur Handhabung der Sicherheit.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die nächsten Abschnitte sind **nicht unbedingt „fortgeschritten“**.
 
index c0af2560a2147b3f2cf22299d64661116e3079b0..85175a895eb308c9103bc43eb60152bd56ec102a 100644 (file)
@@ -10,7 +10,7 @@ Jedes Mal, wenn Sie sich mit Facebook, Google, GitHub, Microsoft oder Twitter an
 
 In diesem Abschnitt erfahren Sie, wie Sie Authentifizierung und Autorisierung mit demselben OAuth2, mit Scopes in Ihrer **FastAPI**-Anwendung verwalten.
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Dies ist ein mehr oder weniger fortgeschrittener Abschnitt. Wenn Sie gerade erst anfangen, können Sie ihn überspringen.
 
@@ -88,7 +88,7 @@ Sehen wir uns zunächst kurz die Teile an, die sich gegenüber den Beispielen im
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -102,7 +102,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -116,7 +116,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -162,7 +162,7 @@ Der `scopes`-Parameter erhält ein `dict` mit jedem Scope als Schlüssel und des
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -176,7 +176,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -190,7 +190,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -218,7 +218,7 @@ Wir verwenden immer noch dasselbe `OAuth2PasswordRequestForm`. Es enthält eine
 
 Und wir geben die Scopes als Teil des JWT-Tokens zurück.
 
-/// danger | "Gefahr"
+/// danger | Gefahr
 
 Der Einfachheit halber fügen wir hier die empfangenen Scopes direkt zum Token hinzu.
 
@@ -252,7 +252,7 @@ Aus Sicherheitsgründen sollten Sie jedoch sicherstellen, dass Sie in Ihrer Anwe
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -266,7 +266,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -280,7 +280,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -308,7 +308,7 @@ Und die Abhängigkeitsfunktion `get_current_active_user` kann auch Unterabhängi
 
 In diesem Fall erfordert sie den Scope `me` (sie könnte mehr als einen Scope erfordern).
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Sie müssen nicht unbedingt an verschiedenen Stellen verschiedene Scopes hinzufügen.
 
@@ -342,7 +342,7 @@ Wir tun dies hier, um zu demonstrieren, wie **FastAPI** auf verschiedenen Ebenen
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -356,7 +356,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -370,7 +370,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -382,7 +382,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// info | "Technische Details"
+/// info | Technische Details
 
 `Security` ist tatsächlich eine Unterklasse von `Depends` und hat nur noch einen zusätzlichen Parameter, den wir später kennenlernen werden.
 
@@ -432,7 +432,7 @@ Diese `SecurityScopes`-Klasse ähnelt `Request` (`Request` wurde verwendet, um d
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -446,7 +446,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -460,7 +460,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -510,7 +510,7 @@ In diese Exception fügen wir (falls vorhanden) die erforderlichen Scopes als du
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -524,7 +524,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -538,7 +538,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -590,7 +590,7 @@ Wir verifizieren auch, dass wir einen Benutzer mit diesem Benutzernamen haben, u
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -604,7 +604,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -618,7 +618,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -662,7 +662,7 @@ Hierzu verwenden wir `security_scopes.scopes`, das eine `list`e mit allen diesen
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -676,7 +676,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -690,7 +690,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -727,7 +727,7 @@ So sieht die Hierarchie der Abhängigkeiten und Scopes aus:
                             * `security_scopes.scopes` enthält `["me"]` für die *Pfadoperation* `read_users_me`, da das in der Abhängigkeit `get_current_active_user` deklariert ist.
                             * `security_scopes.scopes` wird `[]` (nichts) für die *Pfadoperation* `read_system_status` enthalten, da diese keine `Security` mit `scopes` deklariert hat, und deren Abhängigkeit `get_current_user` ebenfalls keinerlei `scopes` deklariert.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Das Wichtige und „Magische“ hier ist, dass `get_current_user` für jede *Pfadoperation* eine andere Liste von `scopes` hat, die überprüft werden.
 
@@ -771,7 +771,7 @@ Am häufigsten ist der „Implicit“-Flow.
 
 Am sichersten ist der „Code“-Flow, die Implementierung ist jedoch komplexer, da mehr Schritte erforderlich sind. Da er komplexer ist, schlagen viele Anbieter letztendlich den „Implicit“-Flow vor.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Es ist üblich, dass jeder Authentifizierungsanbieter seine Flows anders benennt, um sie zu einem Teil seiner Marke zu machen.
 
index 8b9ba2f488c8b765729167f47862e8bc186009f1..c90f7484431f9d9e6b7fbf6d0f54d1231869ef4c 100644 (file)
@@ -8,7 +8,7 @@ Aus diesem Grund werden diese üblicherweise in Umgebungsvariablen bereitgestell
 
 ## Umgebungsvariablen
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie bereits wissen, was „Umgebungsvariablen“ sind und wie man sie verwendet, können Sie gerne mit dem nächsten Abschnitt weiter unten fortfahren.
 
@@ -67,7 +67,7 @@ name = os.getenv("MY_NAME", "World")
 print(f"Hello {name} from Python")
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Das zweite Argument für <a href="https://docs.python.org/3.8/library/os.html#os.getenv" class="external-link" target="_blank">`os.getenv()`</a> ist der zurückzugebende Defaultwert.
 
@@ -124,7 +124,7 @@ Hello World from Python
 
 </div>
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Weitere Informationen dazu finden Sie unter <a href="https://12factor.net/config" class="external-link" target="_blank">The Twelve-Factor App: Config</a>.
 
@@ -200,7 +200,7 @@ In Pydantic v1 würden Sie `BaseSettings` direkt von `pydantic` statt von `pydan
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Für ein schnelles Copy-and-paste verwenden Sie nicht dieses Beispiel, sondern das letzte unten.
 
@@ -232,7 +232,7 @@ $ ADMIN_EMAIL="deadpool@example.com" APP_NAME="ChimichangApp" uvicorn main:app
 
 </div>
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um mehrere Umgebungsvariablen für einen einzelnen Befehl festzulegen, trennen Sie diese einfach durch ein Leerzeichen und fügen Sie alle vor dem Befehl ein.
 
@@ -260,7 +260,7 @@ Und dann verwenden Sie diese in einer Datei `main.py`:
 {!../../docs_src/settings/app01/main.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie benötigen außerdem eine Datei `__init__.py`, wie in [Größere Anwendungen – mehrere Dateien](../tutorial/bigger-applications.md){.internal-link target=_blank} gesehen.
 
@@ -304,7 +304,7 @@ Jetzt erstellen wir eine Abhängigkeit, die ein neues `config.Settings()` zurüc
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -316,7 +316,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wir werden das `@lru_cache` in Kürze besprechen.
 
@@ -344,7 +344,7 @@ Und dann können wir das von der *Pfadoperation-Funktion* als Abhängigkeit einf
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -374,7 +374,7 @@ Wenn Sie viele Einstellungen haben, die sich möglicherweise oft ändern, vielle
 
 Diese Praxis ist so weit verbreitet, dass sie einen Namen hat. Diese Umgebungsvariablen werden üblicherweise in einer Datei `.env` abgelegt und die Datei wird „dotenv“ genannt.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Eine Datei, die mit einem Punkt (`.`) beginnt, ist eine versteckte Datei in Unix-ähnlichen Systemen wie Linux und macOS.
 
@@ -384,7 +384,7 @@ Aber eine dotenv-Datei muss nicht unbedingt genau diesen Dateinamen haben.
 
 Pydantic unterstützt das Lesen dieser Dateitypen mithilfe einer externen Bibliothek. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/latest/concepts/pydantic_settings/#dotenv-env-support" class="external-link" target="_blank">Pydantic Settings: Dotenv (.env) support</a>.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Damit das funktioniert, müssen Sie `pip install python-dotenv` ausführen.
 
@@ -409,7 +409,7 @@ Und dann aktualisieren Sie Ihre `config.py` mit:
 {!> ../../docs_src/settings/app03_an/config.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Das Attribut `model_config` wird nur für die Pydantic-Konfiguration verwendet. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/latest/concepts/config/" class="external-link" target="_blank">Pydantic: Configuration</a>.
 
@@ -423,7 +423,7 @@ Das Attribut `model_config` wird nur für die Pydantic-Konfiguration verwendet.
 {!> ../../docs_src/settings/app03_an/config_pv1.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die Klasse `Config` wird nur für die Pydantic-Konfiguration verwendet. Weitere Informationen finden Sie unter <a href="https://docs.pydantic.dev/1.10/usage/model_config/" class="external-link" target="_blank">Pydantic Model Config</a>.
 
@@ -480,7 +480,7 @@ Da wir jedoch den `@lru_cache`-Dekorator oben verwenden, wird das `Settings`-Obj
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index 6cb3fcf6c36aab91320fc03e66e718810b366096..658a2592e42c0e661ae19e435d91972a613d9cae 100644 (file)
@@ -31,7 +31,7 @@ $ pip install jinja2
 {!../../docs_src/templates/tutorial001.py!}
 ```
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Vor FastAPI 0.108.0 und Starlette 0.29.0 war `name` der erste Parameter.
 
@@ -39,13 +39,13 @@ Außerdem wurde in früheren Versionen das `request`-Objekt als Teil der Schlüs
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Durch die Deklaration von `response_class=HTMLResponse` kann die Dokumentationsoberfläche erkennen, dass die Response HTML sein wird.
 
 ///
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.templating import Jinja2Templates` verwenden.
 
index c565b30f2ff336da8e332a005bfffba2a0911f65..3b4604da36ab25ab8308fae49282ee238fd9d9a5 100644 (file)
@@ -54,7 +54,7 @@ Und dann ruft **FastAPI** diese Überschreibung anstelle der ursprünglichen Abh
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -68,7 +68,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -80,7 +80,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können eine Überschreibung für eine Abhängigkeit festlegen, die an einer beliebigen Stelle in Ihrer **FastAPI**-Anwendung verwendet wird.
 
@@ -96,7 +96,7 @@ Anschließend können Sie Ihre Überschreibungen zurücksetzen (entfernen), inde
 app.dependency_overrides = {}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie eine Abhängigkeit nur während einiger Tests überschreiben möchten, können Sie die Überschreibung zu Beginn des Tests (innerhalb der Testfunktion) festlegen und am Ende (am Ende der Testfunktion) zurücksetzen.
 
index 7ae7d92d6422ca4e06613e6c1817ecddcb682d70..5122e1f33b43770367e4915c3537bd9ea9ef7d5c 100644 (file)
@@ -8,7 +8,7 @@ Dazu verwenden Sie den `TestClient` in einer `with`-Anweisung, eine Verbindung z
 {!../../docs_src/app_testing/tutorial002.py!}
 ```
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Weitere Informationen finden Sie in der Starlette-Dokumentation zum <a href="https://www.starlette.io/testclient/#testing-websocket-sessions" class="external-link" target="_blank">Testen von WebSockets</a>.
 
index 6a0b96680e74eae286271307266663d4ce408801..1c2a6f852dfa75824bb0856377ca2d6eb9f0bcbb 100644 (file)
@@ -35,7 +35,7 @@ Dazu müssen Sie direkt auf den Request zugreifen.
 
 Durch die Deklaration eines *Pfadoperation-Funktionsparameters*, dessen Typ der `Request` ist, weiß **FastAPI**, dass es den `Request` diesem Parameter übergeben soll.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass wir in diesem Fall einen Pfad-Parameter zusätzlich zum Request-Parameter deklarieren.
 
@@ -49,7 +49,7 @@ Auf die gleiche Weise können Sie wie gewohnt jeden anderen Parameter deklariere
 
 Weitere Details zum <a href="https://www.starlette.io/requests/" class="external-link" target="_blank">`Request`-Objekt finden Sie in der offiziellen Starlette-Dokumentation</a>.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.requests import Request` verwenden.
 
index cf13fa23ce425d5e91da1f541608dad4c9bbe6d5..5bc5f6902fea03730b57e53c0022551eeadd96d6 100644 (file)
@@ -50,7 +50,7 @@ Erstellen Sie in Ihrer **FastAPI**-Anwendung einen `websocket`:
 {!../../docs_src/websockets/tutorial001.py!}
 ```
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.websockets import WebSocket` verwenden.
 
@@ -141,7 +141,7 @@ Diese funktionieren auf die gleiche Weise wie für andere FastAPI-Endpunkte/*Pfa
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -155,7 +155,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -196,7 +196,7 @@ Dort können Sie einstellen:
 * Die „Item ID“, die im Pfad verwendet wird.
 * Das „Token“, das als Query-Parameter verwendet wird.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass der Query-„Token“ von einer Abhängigkeit verarbeitet wird.
 
@@ -238,7 +238,7 @@ Das wird die Ausnahme `WebSocketDisconnect` auslösen und alle anderen Clients e
 Client #1596980209979 left the chat
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die obige Anwendung ist ein minimales und einfaches Beispiel, das zeigt, wie Nachrichten verarbeitet und an mehrere WebSocket-Verbindungen gesendet werden.
 
index 49e1cc6f092b2a3166f4ae548f0c7d56b60b5716..611315501de20a7a9bc641a097badcce08a3893f 100644 (file)
@@ -30,13 +30,13 @@ Es wird von vielen Unternehmen verwendet, darunter Mozilla, Red Hat und Eventbri
 
 Es war eines der ersten Beispiele für **automatische API-Dokumentation**, und dies war insbesondere eine der ersten Ideen, welche „die Suche nach“ **FastAPI** inspirierten.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Das Django REST Framework wurde von Tom Christie erstellt. Derselbe Schöpfer von Starlette und Uvicorn, auf denen **FastAPI** basiert.
 
 ///
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Eine automatische API-Dokumentationsoberfläche zu haben.
 
@@ -56,7 +56,7 @@ Diese Entkopplung der Teile und die Tatsache, dass es sich um ein „Mikroframew
 
 Angesichts der Einfachheit von Flask schien es eine gute Ergänzung zum Erstellen von APIs zu sein. Als Nächstes musste ein „Django REST Framework“ für Flask gefunden werden.
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Ein Mikroframework zu sein. Es einfach zu machen, die benötigten Tools und Teile zu kombinieren.
 
@@ -98,7 +98,7 @@ def read_url():
 
 Sehen Sie sich die Ähnlichkeiten in `requests.get(...)` und `@app.get(...)` an.
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 * Über eine einfache und intuitive API zu verfügen.
 * HTTP-Methodennamen (Operationen) direkt, auf einfache und intuitive Weise zu verwenden.
@@ -118,7 +118,7 @@ Irgendwann wurde Swagger an die Linux Foundation übergeben und in OpenAPI umben
 
 Aus diesem Grund spricht man bei Version 2.0 häufig von „Swagger“ und ab Version 3 von „OpenAPI“.
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Einen offenen Standard für API-Spezifikationen zu übernehmen und zu verwenden, anstelle eines benutzerdefinierten Schemas.
 
@@ -147,7 +147,7 @@ Für diese Funktionen wurde Marshmallow entwickelt. Es ist eine großartige Bibl
 
 Aber sie wurde erstellt, bevor Typhinweise in Python existierten. Um also ein <abbr title="die Definition, wie Daten geformt sein werden sollen">Schema</abbr> zu definieren, müssen Sie bestimmte Werkzeuge und Klassen verwenden, die von Marshmallow bereitgestellt werden.
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Code zu verwenden, um „Schemas“ zu definieren, welche Datentypen und Validierung automatisch bereitstellen.
 
@@ -169,7 +169,7 @@ Webargs wurde von denselben Marshmallow-Entwicklern erstellt.
 
 ///
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Eingehende Requestdaten automatisch zu validieren.
 
@@ -199,7 +199,7 @@ APISpec wurde von denselben Marshmallow-Entwicklern erstellt.
 
 ///
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Den offenen Standard für APIs, OpenAPI, zu unterstützen.
 
@@ -231,7 +231,7 @@ Flask-apispec wurde von denselben Marshmallow-Entwicklern erstellt.
 
 ///
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Das OpenAPI-Schema automatisch zu generieren, aus demselben Code, welcher die Serialisierung und Validierung definiert.
 
@@ -251,7 +251,7 @@ Da TypeScript-Daten jedoch nach der Kompilierung nach JavaScript nicht erhalten
 
 Es kann nicht sehr gut mit verschachtelten Modellen umgehen. Wenn es sich beim JSON-Body in der Anfrage also um ein JSON-Objekt mit inneren Feldern handelt, die wiederum verschachtelte JSON-Objekte sind, kann er nicht richtig dokumentiert und validiert werden.
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Python-Typen zu verwenden, um eine hervorragende Editorunterstützung zu erhalten.
 
@@ -263,7 +263,7 @@ Python-Typen zu verwenden, um eine hervorragende Editorunterstützung zu erhalte
 
 Es war eines der ersten extrem schnellen Python-Frameworks, welches auf `asyncio` basierte. Es wurde so gestaltet, dass es Flask sehr ähnlich ist.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Es verwendete <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> anstelle der standardmäßigen Python-`asyncio`-Schleife. Das hat es so schnell gemacht.
 
@@ -271,7 +271,7 @@ Hat eindeutig Uvicorn und Starlette inspiriert, welche derzeit in offenen Benchm
 
 ///
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Einen Weg zu finden, eine hervorragende Performanz zu haben.
 
@@ -287,7 +287,7 @@ Es ist so konzipiert, dass es über Funktionen verfügt, welche zwei Parameter e
 
 Daher müssen Datenvalidierung, Serialisierung und Dokumentation im Code und nicht automatisch erfolgen. Oder sie müssen als Framework oberhalb von Falcon implementiert werden, so wie Hug. Dieselbe Unterscheidung findet auch in anderen Frameworks statt, die vom Design von Falcon inspiriert sind und ein Requestobjekt und ein Responseobjekt als Parameter haben.
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Wege zu finden, eine großartige Performanz zu erzielen.
 
@@ -313,7 +313,7 @@ Das Dependency Injection System erfordert eine Vorab-Registrierung der Abhängig
 
 Routen werden an einer einzigen Stelle deklariert, indem Funktionen verwendet werden, die an anderen Stellen deklariert wurden (anstatt Dekoratoren zu verwenden, welche direkt über der Funktion platziert werden können, welche den Endpunkt verarbeitet). Dies ähnelt eher der Vorgehensweise von Django als der Vorgehensweise von Flask (und Starlette). Es trennt im Code Dinge, die relativ eng miteinander gekoppelt sind.
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Zusätzliche Validierungen für Datentypen zu definieren, mithilfe des „Default“-Werts von Modellattributen. Dies verbessert die Editorunterstützung und war zuvor in Pydantic nicht verfügbar.
 
@@ -341,7 +341,7 @@ Hug wurde von Timothy Crosley erstellt, dem gleichen Schöpfer von <a href="http
 
 ///
 
-/// check | "Ideen, die **FastAPI** inspiriert haben"
+/// check | Ideen, die **FastAPI** inspiriert haben
 
 Hug inspirierte Teile von APIStar und war eines der Tools, die ich am vielversprechendsten fand, neben APIStar.
 
@@ -385,7 +385,7 @@ APIStar wurde von Tom Christie erstellt. Derselbe, welcher Folgendes erstellt ha
 
 ///
 
-/// check | "Inspirierte **FastAPI**"
+/// check | Inspirierte **FastAPI**
 
 Zu existieren.
 
@@ -409,7 +409,7 @@ Das macht es äußerst intuitiv.
 
 Es ist vergleichbar mit Marshmallow. Obwohl es in Benchmarks schneller als Marshmallow ist. Und da es auf den gleichen Python-Typhinweisen basiert, ist die Editorunterstützung großartig.
 
-/// check | "**FastAPI** verwendet es, um"
+/// check | **FastAPI** verwendet es, um
 
 Die gesamte Datenvalidierung, Datenserialisierung und automatische Modelldokumentation (basierend auf JSON Schema) zu erledigen.
 
@@ -444,7 +444,7 @@ Es bietet jedoch keine automatische Datenvalidierung, Serialisierung oder Dokume
 
 Das ist eines der wichtigsten Dinge, welche **FastAPI** hinzufügt, alles basierend auf Python-Typhinweisen (mit Pydantic). Das, plus, das Dependency Injection System, Sicherheitswerkzeuge, OpenAPI-Schemagenerierung, usw.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 ASGI ist ein neuer „Standard“, welcher von Mitgliedern des Django-Kernteams entwickelt wird. Es handelt sich immer noch nicht um einen „Python-Standard“ (ein PEP), obwohl sie gerade dabei sind, das zu tun.
 
@@ -452,7 +452,7 @@ Dennoch wird es bereits von mehreren Tools als „Standard“ verwendet. Das ver
 
 ///
 
-/// check | "**FastAPI** verwendet es, um"
+/// check | **FastAPI** verwendet es, um
 
 Alle Kern-Webaspekte zu handhaben. Und fügt Funktionen obenauf.
 
@@ -470,7 +470,7 @@ Es handelt sich nicht um ein Webframework, sondern um einen Server. Beispielswei
 
 Es ist der empfohlene Server für Starlette und **FastAPI**.
 
-/// check | "**FastAPI** empfiehlt es als"
+/// check | **FastAPI** empfiehlt es als
 
 Hauptwebserver zum Ausführen von **FastAPI**-Anwendungen.
 
index 74b6b6968721813c675a70eeee2b8bc9767849e6..b5b3a4c5219131653a0e48b1990a70b5973f6d8e 100644 (file)
@@ -401,7 +401,7 @@ All das ist es, was FastAPI (via Starlette) befeuert und es eine so beeindrucken
 
 ## Sehr technische Details
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Das folgende können Sie wahrscheinlich überspringen.
 
index 58567ad7f2f68e9acaf5305d0c3fc21cab9872c6..9dfa1e65a84bce3dcdeb7a3db0a9ec3feba9da22 100644 (file)
@@ -106,7 +106,7 @@ $ python -m pip install --upgrade pip
 
 </div>
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Aktivieren Sie jedes Mal, wenn Sie ein neues Package mit `pip` in dieser Umgebung installieren, die Umgebung erneut.
 
@@ -138,7 +138,7 @@ Und wenn Sie diesen lokalen FastAPI-Quellcode aktualisieren und dann die Python-
 
 Auf diese Weise müssen Sie Ihre lokale Version nicht „installieren“, um jede Änderung testen zu können.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Das geschieht nur, wenn Sie die Installation mit der enthaltenen `requirements.txt` durchführen, anstatt `pip install fastapi` direkt auszuführen.
 
@@ -186,7 +186,7 @@ Das stellt die Dokumentation unter `http://127.0.0.1:8008` bereit.
 
 Auf diese Weise können Sie die Dokumentation/Quelldateien bearbeiten und die Änderungen live sehen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Alternativ können Sie die Schritte des Skripts auch manuell ausführen.
 
@@ -229,7 +229,7 @@ Die Dokumentation verwendet <a href="https://www.mkdocs.org/" class="external-li
 
 Und es gibt zusätzliche Tools/Skripte für Übersetzungen, in `./scripts/docs.py`.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie müssen sich den Code in `./scripts/docs.py` nicht anschauen, verwenden Sie ihn einfach in der Kommandozeile.
 
@@ -283,7 +283,7 @@ Hier sind die Schritte, die Ihnen bei Übersetzungen helfen.
 
 * Sehen Sie diese Pull Requests durch (Review), schlagen Sie Änderungen vor, oder segnen Sie sie ab (Approval). Bei den Sprachen, die ich nicht spreche, warte ich, bis mehrere andere die Übersetzung durchgesehen haben, bevor ich den Pull Request merge.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können <a href="https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request" class="external-link" target="_blank">Kommentare mit Änderungsvorschlägen</a> zu vorhandenen Pull Requests hinzufügen.
 
@@ -303,7 +303,7 @@ Angenommen, Sie möchten eine Seite für eine Sprache übersetzen, die bereits 
 
 Im Spanischen lautet der Zwei-Buchstaben-Code `es`. Das Verzeichnis für spanische Übersetzungen befindet sich also unter `docs/es/`.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die Haupt („offizielle“) Sprache ist Englisch und befindet sich unter `docs/en/`.
 
@@ -324,7 +324,7 @@ $ python ./scripts/docs.py live es
 
 </div>
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Alternativ können Sie die Schritte des Skripts auch manuell ausführen.
 
@@ -360,7 +360,7 @@ docs/en/docs/features.md
 docs/es/docs/features.md
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass die einzige Änderung in Pfad und Dateiname der Sprachcode ist, von `en` zu `es`.
 
@@ -399,7 +399,7 @@ Obiges Kommando hat eine Datei `docs/ht/mkdocs.yml` mit einer Minimal-Konfigurat
 INHERIT: ../en/mkdocs.yml
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können diese Datei mit diesem Inhalt auch einfach manuell erstellen.
 
index 3c1c0cfce7821a3418464ce1c0e0942d05ae593f..97ad854e2074e0a0c5cd651a51c46d045a5193e6 100644 (file)
@@ -151,7 +151,7 @@ Und dennoch möchten Sie wahrscheinlich nicht, dass die Anwendung tot bleibt, we
 
 Aber in den Fällen mit wirklich schwerwiegenden Fehlern, die den laufenden **Prozess** zum Absturz bringen, benötigen Sie eine externe Komponente, die den Prozess **neu startet**, zumindest ein paar Mal ...
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 ... Obwohl es wahrscheinlich keinen Sinn macht, sie immer wieder neu zu starten, wenn die gesamte Anwendung einfach **sofort abstürzt**. Aber in diesen Fällen werden Sie es wahrscheinlich während der Entwicklung oder zumindest direkt nach dem Deployment bemerken.
 
@@ -241,7 +241,7 @@ Hier sind einige mögliche Kombinationen und Strategien:
 * **Cloud-Dienste**, welche das für Sie erledigen
     * Der Cloud-Dienst wird wahrscheinlich **die Replikation für Sie übernehmen**. Er würde Sie möglicherweise **einen auszuführenden Prozess** oder ein **zu verwendendes Container-Image** definieren lassen, in jedem Fall wäre es höchstwahrscheinlich **ein einzelner Uvicorn-Prozess**, und der Cloud-Dienst wäre auch verantwortlich für die Replikation.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Machen Sie sich keine Sorgen, wenn einige dieser Punkte zu **Containern**, Docker oder Kubernetes noch nicht viel Sinn ergeben.
 
@@ -263,7 +263,7 @@ Und Sie müssen sicherstellen, dass es sich um einen einzelnen Prozess handelt,
 
 Natürlich gibt es Fälle, in denen es kein Problem darstellt, die Vorab-Schritte mehrmals auszuführen. In diesem Fall ist die Handhabung viel einfacher.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bedenken Sie außerdem, dass Sie, abhängig von Ihrer Einrichtung, in manchen Fällen **gar keine Vorab-Schritte** benötigen, bevor Sie die Anwendung starten.
 
@@ -281,7 +281,7 @@ Hier sind einige mögliche Ideen:
 * Ein Bash-Skript, das die Vorab-Schritte ausführt und dann Ihre Anwendung startet
     * Sie benötigen immer noch eine Möglichkeit, *dieses* Bash-Skript zu starten/neu zu starten, Fehler zu erkennen, usw.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Konkretere Beispiele hierfür mit Containern gebe ich Ihnen in einem späteren Kapitel: [FastAPI in Containern – Docker](docker.md){.internal-link target=_blank}.
 
index c11dc41275f653c863e0a13be34f1599645d5e75..a2734e068356ce5158e0bfd961d9c1da9704e89f 100644 (file)
@@ -4,7 +4,7 @@ Beim Deployment von FastAPI-Anwendungen besteht ein gängiger Ansatz darin, ein
 
 Die Verwendung von Linux-Containern bietet mehrere Vorteile, darunter **Sicherheit**, **Replizierbarkeit**, **Einfachheit** und andere.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie haben es eilig und kennen sich bereits aus? Springen Sie zum [`Dockerfile` unten 👇](#ein-docker-image-fur-fastapi-erstellen).
 
@@ -231,7 +231,7 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
 
     Da das Programm unter `/code` gestartet wird und sich darin das Verzeichnis `./app` mit Ihrem Code befindet, kann **Uvicorn** `app` sehen und aus `app.main` **importieren**.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Lernen Sie, was jede Zeile bewirkt, indem Sie auf die Zahlenblasen im Code klicken. 👆
 
@@ -305,7 +305,7 @@ $ docker build -t myimage .
 
 </div>
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie das `.` am Ende, es entspricht `./` und teilt Docker mit, welches Verzeichnis zum Erstellen des Containerimages verwendet werden soll.
 
@@ -409,7 +409,7 @@ Wenn wir uns nur auf das **Containerimage** für eine FastAPI-Anwendung (und sp
 
 Es könnte sich um einen anderen Container handeln, zum Beispiel mit <a href="https://traefik.io/" class="external-link" target="_blank">Traefik</a>, welcher **HTTPS** und **automatischen** Erwerb von **Zertifikaten** handhabt.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Traefik verfügt über Integrationen mit Docker, Kubernetes und anderen, sodass Sie damit ganz einfach HTTPS für Ihre Container einrichten und konfigurieren können.
 
@@ -441,7 +441,7 @@ Bei der Verwendung von Containern ist normalerweise eine Komponente vorhanden, *
 
 Da diese Komponente die **Last** an Requests aufnehmen und diese (hoffentlich) **ausgewogen** auf die Worker verteilen würde, wird sie üblicherweise auch **Load Balancer** – Lastverteiler – genannt.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die gleiche **TLS-Terminierungsproxy**-Komponente, die für HTTPS verwendet wird, wäre wahrscheinlich auch ein **Load Balancer**.
 
@@ -544,7 +544,7 @@ Dieses Image wäre vor allem in den oben beschriebenen Situationen nützlich: [C
 
 * <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker" class="external-link" target="_blank">tiangolo/uvicorn-gunicorn-fastapi</a>.
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Es besteht eine hohe Wahrscheinlichkeit, dass Sie dieses oder ein ähnliches Basisimage **nicht** benötigen und es besser wäre, wenn Sie das Image von Grund auf neu erstellen würden, wie [oben beschrieben in: Ein Docker-Image für FastAPI erstellen](#ein-docker-image-fur-fastapi-erstellen).
 
@@ -556,7 +556,7 @@ Es verfügt über **vernünftige Standardeinstellungen**, aber Sie können trotz
 
 Es unterstützt auch die Ausführung von <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker#pre_start_path" class="external-link" target="_blank">**Vorab-Schritten vor dem Start** </a> mit einem Skript.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um alle Konfigurationen und Optionen anzuzeigen, gehen Sie zur Docker-Image-Seite: <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker" class="external-link" target="_blank">tiangolo/uvicorn-gunicorn-fastapi</a>.
 
@@ -687,7 +687,7 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
 
 11. Führe den Befehl `uvicorn` aus und weise ihn an, das aus `app.main` importierte `app`-Objekt zu verwenden.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Klicken Sie auf die Zahlenblasen, um zu sehen, was jede Zeile bewirkt.
 
index b1f0aca77e90397b2b99a55cc09274fe3466e94c..63058299505e3b0bac9378d0c76639be154b5224 100644 (file)
@@ -4,7 +4,7 @@ Es ist leicht anzunehmen, dass HTTPS etwas ist, was einfach nur „aktiviert“
 
 Aber es ist viel komplexer als das.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie es eilig haben oder es Ihnen egal ist, fahren Sie mit den nächsten Abschnitten fort, um Schritt-für-Schritt-Anleitungen für die Einrichtung der verschiedenen Technologien zu erhalten.
 
@@ -71,7 +71,7 @@ In dem oder den DNS-Server(n) würden Sie einen Eintrag (einen „`A record`“)
 
 Sie würden dies wahrscheinlich nur einmal tun, beim ersten Mal, wenn Sie alles einrichten.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Dieser Domainnamen-Aspekt liegt weit vor HTTPS, aber da alles von der Domain und der IP-Adresse abhängt, lohnt es sich, das hier zu erwähnen.
 
@@ -121,7 +121,7 @@ Danach verfügen der Client und der Server über eine **verschlüsselte TCP-Verb
 
 Und genau das ist **HTTPS**, es ist einfach **HTTP** innerhalb einer **sicheren TLS-Verbindung**, statt einer puren (unverschlüsselten) TCP-Verbindung.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass die Verschlüsselung der Kommunikation auf der **TCP-Ebene** und nicht auf der HTTP-Ebene erfolgt.
 
index 2b4ed3fad9696271166e7d54e62245b0c94e53c3..fdb33f7fea8de7126d3536b5d8ec5e79f800879e 100644 (file)
@@ -36,7 +36,7 @@ $ pip install "uvicorn[standard]"
 
 </div>
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Durch das Hinzufügen von `standard` installiert und verwendet Uvicorn einige empfohlene zusätzliche Abhängigkeiten.
 
@@ -96,7 +96,7 @@ Running on 0.0.0.0:8080 over http (CTRL + C to quit)
 
 ////
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Denken Sie daran, die Option `--reload` zu entfernen, wenn Sie diese verwendet haben.
 
index 2d10ac4b6441af7713c65e9b2c182b1ff7166432..5b8c69754fff855f0e44aeee550904fb41270539 100644 (file)
@@ -42,7 +42,7 @@ Gemäß den Konventionen zur semantischen Versionierung könnte jede Version unt
 
 FastAPI folgt auch der Konvention, dass jede „PATCH“-Versionsänderung für Bugfixes und abwärtskompatible Änderungen gedacht ist.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Der „PATCH“ ist die letzte Zahl, zum Beispiel ist in `0.2.3` die PATCH-Version `3`.
 
@@ -56,7 +56,7 @@ fastapi>=0.45.0,<0.46.0
 
 Nicht abwärtskompatible Änderungen und neue Funktionen werden in „MINOR“-Versionen hinzugefügt.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 „MINOR“ ist die Zahl in der Mitte, zum Beispiel ist in `0.2.3` die MINOR-Version `2`.
 
index 2c84a5e5b920b6d7b591f5e1b06028d56aa2d223..0b9c5231632ed085874cb6397205dd9e2418ce0e 100644 (file)
@@ -228,7 +228,7 @@ Wenn Sie mir dabei helfen können, **helfen Sie mir, FastAPI am Laufen zu erhalt
 
 Treten Sie dem 👥 <a href="https://discord.gg/VQjSZaeJmf" class="external-link" target="_blank">Discord-Chatserver</a> 👥 bei und treffen Sie sich mit anderen Mitgliedern der FastAPI-Community.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie Fragen haben, stellen Sie sie bei <a href="https://github.com/fastapi/fastapi/discussions/new?category=questions" class="external-link" target="_blank">GitHub Diskussionen</a>, es besteht eine viel bessere Chance, dass Sie hier Hilfe von den [FastAPI-Experten](fastapi-people.md#experten){.internal-link target=_blank} erhalten.
 
index e5fd20a10f471f1c24af929e34cebd3b30bad199..a292be69bc204f0c1026f3b0a91b032fc0e45461 100644 (file)
@@ -40,7 +40,7 @@ Und genau so für ReDoc ...
 {!../../docs_src/custom_docs_ui/tutorial001.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die *Pfadoperation* für `swagger_ui_redirect` ist ein Hilfsmittel bei der Verwendung von OAuth2.
 
@@ -180,7 +180,7 @@ Und genau so für ReDoc ...
 {!../../docs_src/custom_docs_ui/tutorial002.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die *Pfadoperation* für `swagger_ui_redirect` ist ein Hilfsmittel bei der Verwendung von OAuth2.
 
index f81fa1da3d5f7186097eb78eca2829945d8f43eb..ef71d96dc12aa8cef56c86afb0afd4b6d3e55304 100644 (file)
@@ -6,7 +6,7 @@ Das kann insbesondere eine gute Alternative zur Logik in einer Middleware sein.
 
 Wenn Sie beispielsweise den Requestbody lesen oder manipulieren möchten, bevor er von Ihrer Anwendung verarbeitet wird.
 
-/// danger | "Gefahr"
+/// danger | Gefahr
 
 Dies ist eine „fortgeschrittene“ Funktion.
 
@@ -30,7 +30,7 @@ Und eine `APIRoute`-Unterklasse zur Verwendung dieser benutzerdefinierten Reques
 
 ### Eine benutzerdefinierte `GzipRequest`-Klasse erstellen
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Dies ist nur ein einfaches Beispiel, um zu demonstrieren, wie es funktioniert. Wenn Sie Gzip-Unterstützung benötigen, können Sie die bereitgestellte [`GzipMiddleware`](../advanced/middleware.md#gzipmiddleware){.internal-link target=_blank} verwenden.
 
@@ -60,7 +60,7 @@ Hier verwenden wir sie, um aus dem ursprünglichen Request einen `GzipRequest` z
 {!../../docs_src/custom_request_and_route/tutorial001.py!}
 ```
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Ein `Request` hat ein `request.scope`-Attribut, welches einfach ein Python-`dict` ist, welches die mit dem Request verbundenen Metadaten enthält.
 
@@ -84,7 +84,7 @@ Aufgrund unserer Änderungen in `GzipRequest.body` wird der Requestbody jedoch b
 
 ## Zugriff auf den Requestbody in einem Exceptionhandler
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um dasselbe Problem zu lösen, ist es wahrscheinlich viel einfacher, den `body` in einem benutzerdefinierten Handler für `RequestValidationError` zu verwenden ([Fehlerbehandlung](../tutorial/handling-errors.md#den-requestvalidationerror-body-verwenden){.internal-link target=_blank}).
 
index cde56ffdef7f4b243eb585ed6958cb27c4ac6257..4366ea52d81a42805a58b5fb98b025ef538c72c9 100644 (file)
@@ -4,7 +4,7 @@ Da **FastAPI** auf dem **ASGI**-Standard basiert, ist es sehr einfach, jede **Gr
 
 Sie können normale FastAPI-*Pfadoperationen* mit GraphQL in derselben Anwendung kombinieren.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 **GraphQL** löst einige sehr spezifische Anwendungsfälle.
 
@@ -49,7 +49,7 @@ Frühere Versionen von Starlette enthielten eine `GraphQLApp`-Klasse zur Integra
 
 Das wurde von Starlette deprecated, aber wenn Sie Code haben, der das verwendet, können Sie einfach zu <a href="https://github.com/ciscorn/starlette-graphene3" class="external-link" target="_blank">starlette-graphene3</a> **migrieren**, welches denselben Anwendungsfall abdeckt und über eine **fast identische Schnittstelle** verfügt.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie GraphQL benötigen, würde ich Ihnen trotzdem empfehlen, sich <a href="https://strawberry.rocks/" class="external-link" target="_blank">Strawberry</a> anzuschauen, da es auf Typannotationen basiert, statt auf benutzerdefinierten Klassen und Typen.
 
index 75779a01cef26065b220d9199092ebcebaf5a758..84a178fc8b4387d88e2b98ce118b9291a77e7d65 100644 (file)
@@ -6,7 +6,7 @@ Die meisten dieser Ideen sind mehr oder weniger **unabhängig**, und in den meis
 
 Wenn etwas für Ihr Projekt interessant und nützlich erscheint, lesen Sie es, andernfalls überspringen Sie es einfach.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie strukturiert **FastAPI lernen** möchten (empfohlen), lesen Sie stattdessen Kapitel für Kapitel das [Tutorial – Benutzerhandbuch](../tutorial/index.md){.internal-link target=_blank}.
 
index a9ab4beab7017ad679550fe904db336d1d280b93..81d43bc5bcc99669030fbf2433457a6d18460b23 100644 (file)
@@ -12,7 +12,7 @@ Dies ist lediglich eine **schnelle Anleitung / Auffrischung** über Pythons Typh
 
 Aber selbst wenn Sie **FastAPI** nie verwenden, wird es für Sie nützlich sein, ein wenig darüber zu lernen.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Wenn Sie ein Python-Experte sind und bereits alles über Typhinweise wissen, überspringen Sie dieses Kapitel und fahren Sie mit dem nächsten fort.
 
@@ -195,7 +195,7 @@ Da die Liste ein Typ ist, welcher innere Typen enthält, werden diese von eckige
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die inneren Typen in den eckigen Klammern werden als „Typ-Parameter“ bezeichnet.
 
@@ -205,7 +205,7 @@ In diesem Fall ist `str` der Typ-Parameter, der an `List` übergeben wird (oder
 
 Das bedeutet: Die Variable `items` ist eine Liste – `list` – und jedes der Elemente in dieser Liste ist ein String – `str`.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie Python 3.9 oder höher verwenden, müssen Sie `List` nicht von `typing` importieren, Sie können stattdessen den regulären `list`-Typ verwenden.
 
@@ -495,7 +495,7 @@ Um mehr über <a href="https://pydantic-docs.helpmanual.io/" class="external-lin
 
 Viel mehr von all dem werden Sie in praktischer Anwendung im [Tutorial - Benutzerhandbuch](tutorial/index.md){.internal-link target=_blank} sehen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Pydantic verhält sich speziell, wenn Sie `Optional` oder `Union[Etwas, None]` ohne einen Default-Wert verwenden. Sie können darüber in der Pydantic Dokumentation unter <a href="https://docs.pydantic.dev/2.3/usage/models/#required-fields" class="external-link" target="_blank">Required fields</a> mehr erfahren.
 
@@ -537,7 +537,7 @@ Im Moment müssen Sie nur wissen, dass `Annotated` existiert, und dass es Standa
 
 Später werden Sie sehen, wie **mächtig** es sein kann.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Der Umstand, dass es **Standard-Python** ist, bedeutet, dass Sie immer noch die **bestmögliche Entwickler-Erfahrung** in ihrem Editor haben, sowie mit den Tools, die Sie nutzen, um ihren Code zu analysieren, zu refaktorisieren, usw. ✨
 
index cd857f5e7c41f3323cc49140ab7ab4848070619b..d40b6d4fb59c167e7a83f57e6645377b2362f0c5 100644 (file)
@@ -83,7 +83,7 @@ Die Verwendung von `BackgroundTasks` funktioniert auch mit dem <abbr title="Einb
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -97,7 +97,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index 000fa1f437d9775fd194c5c8acb66d825af8b96e..59e91bdcce9032144c5e355c5501b32aac761163 100644 (file)
@@ -29,7 +29,7 @@ Nehmen wir an, Sie haben eine Dateistruktur wie diese:
 │       └── admin.py
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Es gibt mehrere `__init__.py`-Dateien: eine in jedem Verzeichnis oder Unterverzeichnis.
 
@@ -105,7 +105,7 @@ Alle die gleichen Optionen werden unterstützt.
 
 Alle die gleichen `parameters`, `responses`, `dependencies`, `tags`, usw.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 In diesem Beispiel heißt die Variable `router`, aber Sie können ihr einen beliebigen Namen geben.
 
@@ -139,7 +139,7 @@ Wir werden nun eine einfache Abhängigkeit verwenden, um einen benutzerdefiniert
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -151,7 +151,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um dieses Beispiel zu vereinfachen, verwenden wir einen erfundenen Header.
 
@@ -201,7 +201,7 @@ Wir können auch eine Liste von `tags` und zusätzliche `responses` hinzufügen,
 
 Und wir können eine Liste von `dependencies` hinzufügen, die allen *Pfadoperationen* im Router hinzugefügt und für jeden an sie gerichteten Request ausgeführt/aufgelöst werden.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass ähnlich wie bei [Abhängigkeiten in *Pfadoperation-Dekoratoren*](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank} kein Wert an Ihre *Pfadoperation-Funktion* übergeben wird.
 
@@ -222,7 +222,7 @@ Das Endergebnis ist, dass die Pfade für diese Artikel jetzt wie folgt lauten:
     * Zuerst werden die Router-Abhängigkeiten ausgeführt, dann die [`dependencies` im Dekorator](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank} und dann die normalen Parameterabhängigkeiten.
     * Sie können auch [`Security`-Abhängigkeiten mit `scopes`](../advanced/security/oauth2-scopes.md){.internal-link target=_blank} hinzufügen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 `dependencies` im `APIRouter` können beispielsweise verwendet werden, um eine Authentifizierung für eine ganze Gruppe von *Pfadoperationen* zu erfordern. Selbst wenn die Abhängigkeiten nicht jeder einzeln hinzugefügt werden.
 
@@ -248,7 +248,7 @@ Daher verwenden wir einen relativen Import mit `..` für die Abhängigkeiten:
 
 #### Wie relative Importe funktionieren
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie genau wissen, wie Importe funktionieren, fahren Sie mit dem nächsten Abschnitt unten fort.
 
@@ -319,7 +319,7 @@ Aber wir können immer noch _mehr_ `tags` hinzufügen, die auf eine bestimmte *P
 {!../../docs_src/bigger_applications/app/routers/items.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Diese letzte Pfadoperation wird eine Kombination von Tags haben: `["items", "custom"]`.
 
@@ -441,7 +441,7 @@ Mit `app.include_router()` können wir jeden `APIRouter` zur Hauptanwendung `Fas
 
 Es wird alle Routen von diesem Router als Teil von dieser inkludieren.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Tatsächlich wird intern eine *Pfadoperation* für jede *Pfadoperation* erstellt, die im `APIRouter` deklariert wurde.
 
@@ -504,7 +504,7 @@ Hier machen wir es ... nur um zu zeigen, dass wir es können 🤷:
 
 und es wird korrekt funktionieren, zusammen mit allen anderen *Pfadoperationen*, die mit `app.include_router()` hinzugefügt wurden.
 
-/// info | "Sehr technische Details"
+/// info | Sehr technische Details
 
 **Hinweis**: Dies ist ein sehr technisches Detail, das Sie wahrscheinlich **einfach überspringen** können.
 
index d22524c678635defd1a8fab0263e332d4fe1ddc8..df3d7f939f7f9cf18e64d69e6edd30154d9bbb6d 100644 (file)
@@ -32,7 +32,7 @@ Importieren Sie es zuerst:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -46,7 +46,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -58,7 +58,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Beachten Sie, dass `Field` direkt von `pydantic` importiert wird, nicht von `fastapi`, wie die anderen (`Query`, `Path`, `Body`, usw.)
 
@@ -94,7 +94,7 @@ Dann können Sie `Field` mit Modellattributen deklarieren:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -108,7 +108,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -122,7 +122,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 `Field` funktioniert genauso wie `Query`, `Path` und `Body`, es hat die gleichen Parameter, usw.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Tatsächlich erstellen `Query`, `Path` und andere, die sie kennenlernen werden, Instanzen von Unterklassen einer allgemeinen Klasse `Param`, die ihrerseits eine Unterklasse von Pydantics `FieldInfo`-Klasse ist.
 
@@ -134,7 +134,7 @@ Denken Sie daran, dass `Query`, `Path` und andere von `fastapi` tatsächlich Fun
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass jedes Modellattribut mit einem Typ, Defaultwert und `Field` die gleiche Struktur hat wie ein Parameter einer Pfadoperation-Funktion, nur mit `Field` statt `Path`, `Query`, `Body`.
 
@@ -146,7 +146,7 @@ Sie können zusätzliche Information in `Field`, `Query`, `Body`, usw. deklarier
 
 Sie werden später mehr darüber lernen, wie man zusätzliche Information unterbringt, wenn Sie lernen, Beispiele zu deklarieren.
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Extra-Schlüssel, die `Field` überreicht werden, werden auch im resultierenden OpenAPI-Schema Ihrer Anwendung gelistet. Da diese Schlüssel nicht notwendigerweise Teil der OpenAPI-Spezifikation sind, könnten einige OpenAPI-Tools, wie etwa [der OpenAPI-Validator](https://validator.swagger.io/), nicht mit Ihrem generierten Schema funktionieren.
 
index 891c98cb27193b2fde80db6c2a4cf055a95d5da4..8a9978d34bd27a580c3598c85e8418116401972f 100644 (file)
@@ -10,7 +10,7 @@ Und Sie können auch Body-Parameter als optional kennzeichnen, indem Sie den Def
 
 {* ../../docs_src/body_multiple_params/tutorial001_an_py310.py hl[18:20] *}
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass in diesem Fall das `item`, welches vom Body genommen wird, optional ist. Da es `None` als Defaultwert hat.
 
@@ -52,7 +52,7 @@ Es wird deshalb die Parameternamen als Schlüssel (Feldnamen) im Body verwenden,
 }
 ```
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass, obwohl `item` wie zuvor deklariert wurde, es nun unter einem Schlüssel `item` im Body erwartet wird.
 
index 13153aa68145f8f86aa1c1a13846a49affd72bf4..478064a8b1f85ccdef394cedff3699b915e6692d 100644 (file)
@@ -420,7 +420,7 @@ Im folgenden Beispiel akzeptieren Sie irgendein `dict`, solange es `int`-Schlüs
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bedenken Sie, dass JSON nur `str` als Schlüssel unterstützt.
 
index ed5c1890fe58e522ec65c63515b11287ea00ebea..01a534a23dd08214842c301e73fb30540d2d0217 100644 (file)
@@ -54,7 +54,7 @@ Sie können auch die <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/
 
 Das bedeutet, sie senden nur die Daten, die Sie aktualisieren wollen, der Rest bleibt unverändert.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 `PATCH` wird seltener verwendet und ist weniger bekannt als `PUT`.
 
@@ -185,7 +185,7 @@ Zusammengefasst, um Teil-Ersetzungen vorzunehmen:
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können tatsächlich die gleiche Technik mit einer HTTP `PUT` Operation verwenden.
 
@@ -193,7 +193,7 @@ Aber dieses Beispiel verwendet `PATCH`, da dieses für solche Anwendungsfälle g
 
 ///
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass das hereinkommende Modell immer noch validiert wird.
 
index 3a64e747e31b78cbcccc24091fed127b1086a0fa..1038ebe918656b1ec5998a7e270a2a8bd27c7f23 100644 (file)
@@ -149,7 +149,7 @@ Aber Sie bekommen die gleiche Editor-Unterstützung in <a href="https://www.jetb
 
 <img src="/img/tutorial/body/image05.png">
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> als Ihren Editor verwenden, probieren Sie das <a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic PyCharm Plugin</a> aus.
 
@@ -233,7 +233,7 @@ Die Funktionsparameter werden wie folgt erkannt:
 * Wenn der Parameter ein **einfacher Typ** ist (wie `int`, `float`, `str`, `bool`, usw.), wird er als **Query**-Parameter interpretiert.
 * Wenn der Parameter vom Typ eines **Pydantic-Modells** ist, wird er als Request**body** interpretiert.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 FastAPI weiß, dass der Wert von `q` nicht erforderlich ist, wegen des definierten Defaultwertes `= None`
 
index 4714a59aedc3ae4b6b1df27783d47afe24bd93d0..ecb14ad038c954f4ce8600682419e7ff6955164c 100644 (file)
@@ -32,7 +32,7 @@ Importieren Sie zuerst `Cookie`:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -46,7 +46,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -90,7 +90,7 @@ Der erste Wert ist der Typ. Sie können `Cookie` die gehabten Extra Validierungs
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -104,7 +104,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -116,7 +116,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 `Cookie` ist eine Schwesterklasse von `Path` und `Query`. Sie erbt von derselben gemeinsamen `Param`-Elternklasse.
 
index a660ab337d41f1a5e53fab89d9c5ac9ee4698695..a3e3d2c60f1d65dec7820bb72dd8faaf89ea8c27 100644 (file)
@@ -32,7 +32,7 @@ Im vorherigen Beispiel haben wir ein `dict` von unserer Abhängigkeit („Depend
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -46,7 +46,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -145,7 +145,7 @@ Dann können wir das „Dependable“ `common_parameters` der Abhängigkeit von
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -159,7 +159,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -199,7 +199,7 @@ Achten Sie auf die Methode `__init__`, die zum Erstellen der Instanz der Klasse
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -213,7 +213,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -253,7 +253,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -267,7 +267,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -319,7 +319,7 @@ Jetzt können Sie Ihre Abhängigkeit mithilfe dieser Klasse deklarieren.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -333,7 +333,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -361,7 +361,7 @@ commons: Annotated[CommonQueryParams, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -397,7 +397,7 @@ commons: Annotated[CommonQueryParams, ...
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -423,7 +423,7 @@ commons: Annotated[Any, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -463,7 +463,7 @@ commons = Depends(CommonQueryParams)
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -477,7 +477,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -507,7 +507,7 @@ commons: Annotated[CommonQueryParams, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -535,7 +535,7 @@ commons: Annotated[CommonQueryParams, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -559,7 +559,7 @@ commons: Annotated[CommonQueryParams, Depends()]
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -601,7 +601,7 @@ Dasselbe Beispiel würde dann so aussehen:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -615,7 +615,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -629,7 +629,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ... und **FastAPI** wird wissen, was zu tun ist.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie das eher verwirrt, als Ihnen zu helfen, ignorieren Sie es, Sie *brauchen* es nicht.
 
index 3bb261e44d49b6d1011742602335a8c1c59401e2..6aa5ef199ab87d8c679e4d9a53b0ca456d551b92 100644 (file)
@@ -32,7 +32,7 @@ Es sollte eine `list`e von `Depends()` sein:
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -46,7 +46,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 Diese Abhängigkeiten werden auf die gleiche Weise wie normale Abhängigkeiten ausgeführt/aufgelöst. Aber ihr Wert (falls sie einen zurückgeben) wird nicht an Ihre *Pfadoperation-Funktion* übergeben.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Einige Editoren prüfen, ob Funktionsparameter nicht verwendet werden, und zeigen das als Fehler an.
 
@@ -90,7 +90,7 @@ Sie können Anforderungen für einen Request (wie Header) oder andere Unterabhä
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -124,7 +124,7 @@ Die Abhängigkeiten können Exceptions `raise`n, genau wie normale Abhängigkeit
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -160,7 +160,7 @@ Sie können also eine normale Abhängigkeit (die einen Wert zurückgibt), die Si
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index 48b057e28cad6e84b843e64dabf6fab624f9c483..ce6bbad69d2b4589c7341d59fd2de09a1af42310 100644 (file)
@@ -4,13 +4,13 @@ FastAPI unterstützt Abhängigkeiten, die nach Abschluss einige <abbr title="Man
 
 Verwenden Sie dazu `yield` statt `return` und schreiben Sie die zusätzlichen Schritte / den zusätzlichen Code danach.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Stellen Sie sicher, dass Sie `yield` nur einmal pro Abhängigkeit verwenden.
 
 ///
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Jede Funktion, die dekoriert werden kann mit:
 
@@ -45,7 +45,7 @@ Der auf die `yield`-Anweisung folgende Code wird ausgeführt, nachdem die Respon
 {!../../docs_src/dependencies/tutorial007.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können `async`hrone oder reguläre Funktionen verwenden.
 
@@ -93,7 +93,7 @@ Beispielsweise kann `dependency_c` von `dependency_b` und `dependency_b` von `de
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -129,7 +129,7 @@ Und wiederum benötigt `dependency_b` den Wert von `dependency_a` (hier `dep_a`
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -149,7 +149,7 @@ Sie können beliebige Kombinationen von Abhängigkeiten haben.
 
 **FastAPI** stellt sicher, dass alles in der richtigen Reihenfolge ausgeführt wird.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Dieses funktioniert dank Pythons <a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">Kontextmanager</a>.
 
@@ -163,7 +163,7 @@ Sie haben gesehen, dass Ihre Abhängigkeiten `yield` verwenden können und `try`
 
 Auf die gleiche Weise könnten Sie im Exit-Code nach dem `yield` eine `HTTPException` oder ähnliches auslösen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Dies ist eine etwas fortgeschrittene Technik, die Sie in den meisten Fällen nicht wirklich benötigen, da Sie Exceptions (einschließlich `HTTPException`) innerhalb des restlichen Anwendungscodes auslösen können, beispielsweise in der *Pfadoperation-Funktion*.
 
@@ -189,7 +189,7 @@ Aber es ist für Sie da, wenn Sie es brauchen. 🤓
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -250,7 +250,7 @@ Nachdem eine dieser Responses gesendet wurde, kann keine weitere Response gesend
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Obiges Diagramm verwendet `HTTPException`, aber Sie können auch jede andere Exception auslösen, die Sie in einer Abhängigkeit mit `yield` abfangen, oder mit einem [benutzerdefinierten Exceptionhandler](../handling-errors.md#benutzerdefinierte-exceptionhandler-definieren){.internal-link target=_blank} erstellt haben.
 
@@ -260,7 +260,7 @@ Wenn Sie eine Exception auslösen, wird diese mit yield an die Abhängigkeiten 
 
 ## Abhängigkeiten mit `yield`, `HTTPException` und Hintergrundtasks
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Sie benötigen diese technischen Details höchstwahrscheinlich nicht, Sie können diesen Abschnitt überspringen und weiter unten fortfahren.
 
@@ -274,7 +274,7 @@ Dies wurde hauptsächlich so konzipiert, damit die gleichen Objekte, die durch A
 
 Da dies jedoch bedeuten würde, darauf zu warten, dass die Response durch das Netzwerk reist, während eine Ressource unnötigerweise in einer Abhängigkeit mit yield gehalten wird (z. B. eine Datenbankverbindung), wurde dies in FastAPI 0.106.0 geändert.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Darüber hinaus handelt es sich bei einem Hintergrundtask normalerweise um einen unabhängigen Satz von Logik, der separat behandelt werden sollte, mit eigenen Ressourcen (z. B. einer eigenen Datenbankverbindung).
 
@@ -308,7 +308,7 @@ Wenn Sie eine Abhängigkeit mit `yield` erstellen, erstellt **FastAPI** dafür i
 
 ### Kontextmanager in Abhängigkeiten mit `yield` verwenden
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Dies ist mehr oder weniger eine „fortgeschrittene“ Idee.
 
@@ -324,7 +324,7 @@ Sie können solche auch innerhalb von **FastAPI**-Abhängigkeiten mit `yield` ve
 {!../../docs_src/dependencies/tutorial010.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Andere Möglichkeiten, einen Kontextmanager zu erstellen, sind:
 
index 6b9e9e3958d2d62596baec3ff8d9757de4f6c8ea..4df9f64e9b0dbe073f836e676473a64cb9bfee24 100644 (file)
@@ -24,7 +24,7 @@ In diesem Fall werden sie auf alle *Pfadoperationen* in der Anwendung angewendet
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index 494708d1911a39fca415ab9b9862aa256a894d0d..2a4a5177a974c3e4e30ef9209ac033a292795ef9 100644 (file)
@@ -56,7 +56,7 @@ Es handelt sich einfach um eine Funktion, die die gleichen Parameter entgegennim
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -70,7 +70,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -138,7 +138,7 @@ Bitte [aktualisieren Sie FastAPI](../../deployment/versions.md#upgrade-der-fasta
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -152,7 +152,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -194,7 +194,7 @@ So wie auch `Body`, `Query`, usw., verwenden Sie `Depends` mit den Parametern Ih
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -208,7 +208,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -230,7 +230,7 @@ Sie **rufen diese nicht direkt auf** (fügen Sie am Ende keine Klammern hinzu),
 
 Und diese Funktion akzeptiert Parameter auf die gleiche Weise wie *Pfadoperation-Funktionen*.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Im nächsten Kapitel erfahren Sie, welche anderen „Dinge“, außer Funktionen, Sie als Abhängigkeiten verwenden können.
 
@@ -299,7 +299,7 @@ Da wir jedoch `Annotated` verwenden, können wir diesen `Annotated`-Wert in eine
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Das ist schlicht Standard-Python, es wird als „Typalias“ bezeichnet und ist eigentlich nicht **FastAPI**-spezifisch.
 
@@ -321,7 +321,7 @@ Und Sie können Abhängigkeiten mit `async def` innerhalb normaler `def`-*Pfadop
 
 Es spielt keine Rolle. **FastAPI** weiß, was zu tun ist.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Wenn Ihnen das nichts sagt, lesen Sie den [Async: *„In Eile?“*](../../async.md#in-eile){.internal-link target=_blank}-Abschnitt über `async` und `await` in der Dokumentation.
 
index a20aed63b3b46a30ca1007e1cdb29096fc62ef9c..6da7c64debfa4146e18854c118cf321e10120e77 100644 (file)
@@ -36,7 +36,7 @@ Sie könnten eine erste Abhängigkeit („Dependable“) wie folgt erstellen:
 
 //// tab | Python 3.10 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -50,7 +50,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -96,7 +96,7 @@ Dann können Sie eine weitere Abhängigkeitsfunktion (ein „Dependable“) erst
 
 //// tab | Python 3.10 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -110,7 +110,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -159,7 +159,7 @@ Diese Abhängigkeit verwenden wir nun wie folgt:
 
 //// tab | Python 3.10 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -173,7 +173,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -223,7 +223,7 @@ async def needy_dependency(fresh_value: Annotated[str, Depends(get_value, use_ca
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -244,7 +244,7 @@ Einfach Funktionen, die genauso aussehen wie *Pfadoperation-Funktionen*.
 
 Dennoch ist es sehr mächtig und ermöglicht Ihnen die Deklaration beliebig tief verschachtelter Abhängigkeits-„Graphen“ (Bäume).
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 All dies scheint angesichts dieser einfachen Beispiele möglicherweise nicht so nützlich zu sein.
 
index 0ab72b8dd37fb19f7271f7f85cd77067df17c512..428eee287c0867758494ba36fecaa536d4c968cc 100644 (file)
@@ -42,7 +42,7 @@ Das Resultat dieses Aufrufs ist etwas, das mit Pythons Standard-<a href="https:/
 
 Es wird also kein großer `str` zurückgegeben, der die Daten im JSON-Format (als String) enthält. Es wird eine Python-Standarddatenstruktur (z. B. ein `dict`) zurückgegeben, mit Werten und Unterwerten, die alle mit JSON kompatibel sind.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 `jsonable_encoder` wird tatsächlich von **FastAPI** intern verwendet, um Daten zu konvertieren. Aber es ist in vielen anderen Szenarien hilfreich.
 
index 14e84206542206374d0f30cf25c6e579ba0d1f27..4c2c158db5437803bdcc02dab7af6b42337a21a4 100644 (file)
@@ -8,7 +8,7 @@ Insbesondere Benutzermodelle, denn:
 * Das **herausgehende Modell** sollte kein Passwort haben.
 * Das **Datenbankmodell** sollte wahrscheinlich ein <abbr title='Ein aus scheinbar zufälligen Zeichen bestehender „Fingerabdruck“ eines Textes. Der Inhalt des Textes kann nicht eingesehen werden.'>gehashtes</abbr> Passwort haben.
 
-/// danger | "Gefahr"
+/// danger | Gefahr
 
 Speichern Sie niemals das Klartext-Passwort eines Benutzers. Speichern Sie immer den „sicheren Hash“, den Sie verifizieren können.
 
@@ -154,7 +154,7 @@ UserInDB(
 )
 ```
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Die Hilfsfunktionen `fake_password_hasher` und `fake_save_user` demonstrieren nur den möglichen Fluss der Daten und bieten natürlich keine echte Sicherheit.
 
@@ -200,7 +200,7 @@ Das wird in OpenAPI mit `anyOf` angezeigt.
 
 Um das zu tun, verwenden Sie Pythons Standard-Typhinweis <a href="https://docs.python.org/3/library/typing.html#typing.Union" class="external-link" target="_blank">`typing.Union`</a>:
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Listen Sie, wenn Sie eine <a href="https://pydantic-docs.helpmanual.io/usage/types/#unions" class="external-link" target="_blank">`Union`</a> definieren, denjenigen Typ zuerst, der am spezifischsten ist, gefolgt von den weniger spezifischen Typen. Im Beispiel oben, in `Union[PlaneItem, CarItem]` also den spezifischeren `PlaneItem` vor dem weniger spezifischen `CarItem`.
 
index fe3886b70c1b7b704c0d6049630064e6ca375191..debefb1564cb8b25d9e062755f3ab32357f4da35 100644 (file)
@@ -24,7 +24,7 @@ $ uvicorn main:app --reload
 
 </div>
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Der Befehl `uvicorn main:app` bezieht sich auf:
 
@@ -139,7 +139,7 @@ Ebenfalls können Sie es verwenden, um automatisch Code für Clients zu generier
 
 `FastAPI` ist eine Python-Klasse, die die gesamte Funktionalität für Ihre API bereitstellt.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 `FastAPI`  ist eine Klasse, die direkt von `Starlette` erbt.
 
@@ -259,7 +259,7 @@ Das `@app.get("/")` sagt **FastAPI**, dass die Funktion direkt darunter für die
  * den Pfad `/`
  * unter der Verwendung der <abbr title="eine HTTP GET Methode"><code>get</code>-Operation</abbr> gehen
 
-/// info | "`@decorator` Information"
+/// info | `@decorator` Information
 
 Diese `@something`-Syntax wird in Python „Dekorator“ genannt.
 
@@ -286,7 +286,7 @@ Oder die exotischeren:
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Es steht Ihnen frei, jede Operation (HTTP-Methode) so zu verwenden, wie Sie es möchten.
 
@@ -324,7 +324,7 @@ Sie könnten sie auch als normale Funktion anstelle von `async def` definieren:
 {!../../docs_src/first_steps/tutorial003.py!}
 ```
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Wenn Sie den Unterschied nicht kennen, lesen Sie [Async: *„In Eile?“*](../async.md#in-eile){.internal-link target=_blank}.
 
index 70dc0c523f614016f88e003d556d6842ea35b654..85de76ef1bdda3836319214c236631321daa6222 100644 (file)
@@ -63,7 +63,7 @@ Aber wenn der Client `http://example.com/items/bar` anfragt (ein nicht-existiere
 }
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie eine `HTTPException` auslösen, können Sie dem Parameter `detail` jeden Wert übergeben, der nach JSON konvertiert werden kann, nicht nur `str`.
 
@@ -109,7 +109,7 @@ Sie erhalten also einen sauberen Error mit einem Statuscode `418` und dem JSON-I
 {"message": "Oops! yolo did something. There goes a rainbow..."}
 ```
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.requests import Request` und `from starlette.responses import JSONResponse` verwenden.
 
@@ -166,7 +166,7 @@ path -> item_id
 
 #### `RequestValidationError` vs. `ValidationError`
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Das folgende sind technische Details, die Sie überspringen können, wenn sie für Sie nicht wichtig sind.
 
@@ -192,7 +192,7 @@ Zum Beispiel könnten Sie eine Klartext-Response statt JSON für diese Fehler zu
 {!../../docs_src/handling_errors/tutorial004.py!}
 ```
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.responses import PlainTextResponse` verwenden.
 
index c4901c2ee4bdcdb8802bae6a7593e7f75f82e443..40a773f5030d7c9b166aad78713bfb847d9415b4 100644 (file)
@@ -32,7 +32,7 @@ Importieren Sie zuerst `Header`:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -46,7 +46,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -90,7 +90,7 @@ Der erste Wert ist der Typ. Sie können `Header` die gehabten Extra Validierungs
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -104,7 +104,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -116,7 +116,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 `Header` ist eine Schwesterklasse von `Path`, `Query` und `Cookie`. Sie erbt von derselben gemeinsamen `Param`-Elternklasse.
 
@@ -172,7 +172,7 @@ Wenn Sie aus irgendeinem Grund das automatische Konvertieren von Unterstrichen z
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -186,7 +186,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -198,7 +198,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Bevor Sie `convert_underscores` auf `False` setzen, bedenken Sie, dass manche HTTP-Proxys und Server die Verwendung von Headern mit Unterstrichen nicht erlauben.
 
@@ -240,7 +240,7 @@ Um zum Beispiel einen Header `X-Token` zu deklarieren, der mehrmals vorkommen ka
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -254,7 +254,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -268,7 +268,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index c15d0b0bd3f154fba6b1adb68800e959f691c6bc..3cbfe37f4e7664cab3b344e9f228f8b832e659a5 100644 (file)
@@ -52,7 +52,7 @@ $ pip install "fastapi[all]"
 
 ... das beinhaltet auch `uvicorn`, welchen Sie als Server verwenden können, der ihren Code ausführt.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Sie können die einzelnen Teile auch separat installieren.
 
index 98724e1e8a9b9bf14173716d8002a9c87c3b0b1a..5a0b723c5b653d2efd40403e51568d913f31f6fe 100644 (file)
@@ -22,7 +22,7 @@ Sie können diese wie folgt setzen:
 {!../../docs_src/metadata/tutorial001.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können Markdown in das Feld `description` schreiben und es wird in der Ausgabe gerendert.
 
@@ -68,7 +68,7 @@ Erstellen Sie Metadaten für Ihre Tags und übergeben Sie sie an den Parameter `
 
 Beachten Sie, dass Sie Markdown in den Beschreibungen verwenden können. Beispielsweise wird „login“ in Fettschrift (**login**) und „fancy“ in Kursivschrift (_fancy_) angezeigt.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie müssen nicht für alle von Ihnen verwendeten Tags Metadaten hinzufügen.
 
index 6bdececbc22cc5742c18f9e590280159e232b9d9..d3699be1bd75b0192ac88e661eb3ed8494fc7bc1 100644 (file)
@@ -11,7 +11,7 @@ Eine „Middleware“ ist eine Funktion, die mit jedem **Request** arbeitet, bev
 * Sie kann etwas mit dieser **Response** tun oder beliebigen Code ausführen.
 * Dann gibt sie die **Response** zurück.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Wenn Sie Abhängigkeiten mit `yield` haben, wird der Exit-Code *nach* der Middleware ausgeführt.
 
@@ -33,7 +33,7 @@ Die Middleware-Funktion erhält:
 
 {* ../../docs_src/middleware/tutorial001.py hl[8:9,11,14] *}
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass benutzerdefinierte proprietäre Header hinzugefügt werden können. <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">Verwenden Sie dafür das Präfix 'X-'</a>.
 
@@ -41,7 +41,7 @@ Wenn Sie jedoch benutzerdefinierte Header haben, die ein Client in einem Browser
 
 ///
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie könnten auch `from starlette.requests import Request` verwenden.
 
index 411916e9c5007e369aa3d3fe8754d2545af97780..55d0f2a9158c99988f2fb3ffcb7648571c708f6c 100644 (file)
@@ -2,7 +2,7 @@
 
 Es gibt mehrere Konfigurations-Parameter, die Sie Ihrem *Pfadoperation-Dekorator* übergeben können.
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Beachten Sie, dass diese Parameter direkt dem *Pfadoperation-Dekorator* übergeben werden, nicht der *Pfadoperation-Funktion*.
 
@@ -42,7 +42,7 @@ Aber falls Sie sich nicht mehr erinnern, wofür jede Nummer steht, können Sie d
 
 Dieser Statuscode wird in der Response verwendet und zum OpenAPI-Schema hinzugefügt.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette import status` verwenden.
 
index fc2d5dff113c1f70649b3d1ef03fa9368daaabd8..b74fc8a04a942768882168e224408719a6c43c77 100644 (file)
@@ -32,7 +32,7 @@ Importieren Sie zuerst `Path` von `fastapi`, und importieren Sie `Annotated`.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -46,7 +46,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -100,7 +100,7 @@ Um zum Beispiel einen `title`-Metadaten-Wert für den Pfad-Parameter `item_id` z
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -114,7 +114,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -126,7 +126,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Ein Pfad-Parameter ist immer erforderlich, weil er Teil des Pfads sein muss.
 
@@ -138,7 +138,7 @@ Doch selbst wenn Sie ihn mit `None` deklarieren, oder einen Defaultwert setzen,
 
 ## Sortieren Sie die Parameter, wie Sie möchten
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie `Annotated` verwenden, ist das folgende nicht so wichtig / nicht notwendig.
 
@@ -160,7 +160,7 @@ Sie können Ihre Funktion also so deklarieren:
 
 //// tab | Python 3.8 nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -192,7 +192,7 @@ Aber bedenken Sie, dass Sie dieses Problem nicht haben, wenn Sie `Annotated` ver
 
 ## Sortieren Sie die Parameter wie Sie möchten: Tricks
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie `Annotated` verwenden, ist das folgende nicht so wichtig / nicht notwendig.
 
@@ -260,7 +260,7 @@ Hier, mit `ge=1`, wird festgelegt, dass `item_id` eine Ganzzahl benötigt, die g
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -297,7 +297,7 @@ Das Gleiche trifft zu auf:
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -337,7 +337,7 @@ Das gleiche gilt für <abbr title="less than – kleiner als"><code>lt</code></a
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -368,7 +368,7 @@ Sie alle teilen die gleichen Parameter für zusätzliche Validierung und Metadat
 
 ///
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 `Query`, `Path` und andere, die Sie von `fastapi` importieren, sind tatsächlich Funktionen.
 
index 9cb172c941d884ac594c241c9907f5f9abc8d06e..e91c3db515a3e0b404995fa922a81c4df0d192cc 100644 (file)
@@ -159,7 +159,7 @@ Erstellen Sie dann Klassen-Attribute mit festgelegten Werten, welches die erlaub
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Falls Sie sich fragen, was „AlexNet“, „ResNet“ und „LeNet“ ist, das sind Namen von <abbr title="Genau genommen, Deep-Learning-Modellarchitekturen">Modellen</abbr> für maschinelles Lernen.
 
@@ -199,7 +199,7 @@ Den tatsächlichen Wert (in diesem Fall ein `str`) erhalten Sie via `model_name.
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können den Wert `"lenet"` außerdem mittels `ModelName.lenet.value` abrufen.
 
@@ -256,7 +256,7 @@ Sie verwenden das also wie folgt:
 {!../../docs_src/path_params/tutorial004.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Der Parameter könnte einen führenden Schrägstrich (`/`) haben, wie etwa in `/home/johndoe/myfile.txt`.
 
index a9f1e0f395c561e85e8cfd29e6882ce63bea53c3..d71a23dc23fcb48b35fe75e92d73ab73d46d657f 100644 (file)
@@ -22,7 +22,7 @@ Nehmen wir als Beispiel die folgende Anwendung:
 
 Der Query-Parameter `q` hat den Typ `Union[str, None]` (oder `str | None` in Python 3.10), was bedeutet, er ist entweder ein `str` oder `None`. Der Defaultwert ist `None`, also weiß FastAPI, der Parameter ist nicht erforderlich.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 FastAPI weiß nur dank des definierten Defaultwertes `=None`, dass der Wert von `q` nicht erforderlich ist
 
@@ -153,7 +153,7 @@ FastAPI wird nun:
 
 Frühere Versionen von FastAPI (vor <abbr title="vor 2023-03">0.95.0</abbr>) benötigten `Query` als Defaultwert des Parameters, statt es innerhalb von `Annotated` unterzubringen. Die Chance ist groß, dass Sie Quellcode sehen, der das immer noch so macht, darum erkläre ich es Ihnen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Verwenden Sie für neuen Code, und wann immer möglich, `Annotated`, wie oben erklärt. Es gibt mehrere Vorteile (unten erläutert) und keine Nachteile. 🍰
 
@@ -301,7 +301,7 @@ Sie können auch einen Parameter `min_length` hinzufügen:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -315,7 +315,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -357,7 +357,7 @@ Sie können einen <abbr title="Ein regulärer Ausdruck, auch regex oder regexp g
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -371,7 +371,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -433,7 +433,7 @@ Beispielsweise könnten Sie den `q` Query-Parameter so deklarieren, dass er eine
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -445,7 +445,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Ein Parameter ist optional (nicht erforderlich), wenn er irgendeinen Defaultwert, auch `None`, hat.
 
@@ -503,7 +503,7 @@ Wenn Sie einen Parameter erforderlich machen wollen, während Sie `Query` verwen
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -513,7 +513,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 {!> ../../docs_src/query_params_str_validations/tutorial006.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass, obwohl in diesem Fall `Query()` der Funktionsparameter-Defaultwert ist, wir nicht `default=None` zu `Query()` hinzufügen.
 
@@ -545,7 +545,7 @@ Es gibt eine Alternative, die explizit deklariert, dass ein Wert erforderlich is
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -599,7 +599,7 @@ Um das zu machen, deklarieren Sie, dass `None` ein gültiger Typ ist, aber verwe
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -613,7 +613,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -625,13 +625,13 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Pydantic, welches die gesamte Datenvalidierung und Serialisierung in FastAPI antreibt, hat ein spezielles Verhalten, wenn Sie `Optional` oder `Union[Something, None]` ohne Defaultwert verwenden, Sie können mehr darüber in der Pydantic-Dokumentation unter <a href="https://docs.pydantic.dev/2.3/usage/models/#required-fields" class="external-link" target="_blank">Required fields</a> erfahren.
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Denken Sie daran, dass Sie in den meisten Fällen, wenn etwas erforderlich ist, einfach den Defaultwert weglassen können. Sie müssen also normalerweise `...` nicht verwenden.
 
@@ -669,7 +669,7 @@ Um zum Beispiel einen Query-Parameter `q` zu deklarieren, der mehrere Male in de
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -683,7 +683,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -697,7 +697,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -728,7 +728,7 @@ Die Response für diese URL wäre also:
 }
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um einen Query-Parameter vom Typ `list` zu deklarieren, wie im Beispiel oben, müssen Sie explizit `Query` verwenden, sonst würde der Parameter als Requestbody interpretiert werden.
 
@@ -760,7 +760,7 @@ Und Sie können auch eine Default-`list`e von Werten definieren, wenn keine übe
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -774,7 +774,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -825,7 +825,7 @@ Sie können auch `list` direkt verwenden, anstelle von `List[str]` (oder `list[s
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -837,7 +837,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass FastAPI in diesem Fall den Inhalt der Liste nicht überprüft.
 
@@ -851,7 +851,7 @@ Sie können mehr Informationen zum Parameter hinzufügen.
 
 Diese Informationen werden zur generierten OpenAPI hinzugefügt, und von den Dokumentations-Oberflächen und von externen Tools verwendet.
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass verschiedene Tools OpenAPI möglicherweise unterschiedlich gut unterstützen.
 
@@ -887,7 +887,7 @@ Sie können einen Titel hinzufügen – `title`:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -901,7 +901,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -941,7 +941,7 @@ Und eine Beschreibung – `description`:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -955,7 +955,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -1011,7 +1011,7 @@ Dann können Sie einen `alias` deklarieren, und dieser Alias wird verwendet, um
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -1025,7 +1025,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -1071,7 +1071,7 @@ In diesem Fall fügen Sie den Parameter `deprecated=True` zu `Query` hinzu.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -1085,7 +1085,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -1131,7 +1131,7 @@ Um einen Query-Parameter vom generierten OpenAPI-Schema auszuschließen (und dah
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -1145,7 +1145,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index bb1dbdf9c3db0acbbadfc6e5077591c60b95dd4f..e67fef79d03bf20e611a38d26e888ae2504b743c 100644 (file)
@@ -241,7 +241,7 @@ In diesem Fall gibt es drei Query-Parameter:
 * `skip`, ein `int` mit einem Defaultwert `0`.
 * `limit`, ein optionales `int`.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie können auch `Enum`s verwenden, auf die gleiche Weise wie mit [Pfad-Parametern](path-params.md#vordefinierte-parameterwerte){.internal-link target=_blank}.
 
index c0d0ef3f2e7a8aeb26cb2f0e795b40f9f7b0c2f9..cbfb4271fe659e0b2a876c74ba65f36b7da7255f 100644 (file)
@@ -34,7 +34,7 @@ Importieren Sie `File` und `UploadFile` von `fastapi`:
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -68,7 +68,7 @@ Erstellen Sie Datei-Parameter, so wie Sie es auch mit `Body` und `Form` machen w
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -88,7 +88,7 @@ Aber erinnern Sie sich, dass, wenn Sie `Query`, `Path`,  `File` und andere von `
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um Dateibodys zu deklarieren, müssen Sie `File` verwenden, da diese Parameter sonst als Query-Parameter oder Body(-JSON)-Parameter interpretiert werden würden.
 
@@ -124,7 +124,7 @@ Definieren Sie einen Datei-Parameter mit dem Typ `UploadFile`:
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -177,13 +177,13 @@ Wenn Sie sich innerhalb einer normalen `def`-*Pfadoperation-Funktion* befinden,
 contents = myfile.file.read()
 ```
 
-/// note | "Technische Details zu `async`"
+/// note | Technische Details zu `async`
 
 Wenn Sie die `async`-Methoden verwenden, führt **FastAPI** die Datei-Methoden in einem <abbr title="Mehrere unabhängige Kindprozesse">Threadpool</abbr> aus und erwartet sie.
 
 ///
 
-/// note | "Technische Details zu Starlette"
+/// note | Technische Details zu Starlette
 
 **FastAPI**s `UploadFile` erbt direkt von **Starlette**s `UploadFile`, fügt aber ein paar notwendige Teile hinzu, um es kompatibel mit **Pydantic** und anderen Teilen von FastAPI zu machen.
 
@@ -195,7 +195,7 @@ HTML-Formulare (`<form></form>`) senden die Daten in einer „speziellen“ Kodi
 
 **FastAPI** stellt sicher, dass diese Daten korrekt ausgelesen werden, statt JSON zu erwarten.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Daten aus Formularen werden, wenn es keine Dateien sind, normalerweise mit dem <abbr title='Media type – Medientyp, Typ des Mediums'>„media type“</abbr> `application/x-www-form-urlencoded` kodiert.
 
@@ -205,7 +205,7 @@ Wenn Sie mehr über Formularfelder und ihre Kodierungen lesen möchten, besuchen
 
 ///
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Sie können mehrere `File`- und `Form`-Parameter in einer *Pfadoperation* deklarieren, aber Sie können nicht gleichzeitig auch `Body`-Felder deklarieren, welche Sie als JSON erwarten, da der Request den Body mittels `multipart/form-data` statt `application/json` kodiert.
 
@@ -243,7 +243,7 @@ Sie können eine Datei optional machen, indem Sie Standard-Typannotationen verwe
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -257,7 +257,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -291,7 +291,7 @@ Sie können auch `File()` zusammen mit `UploadFile` verwenden, um zum Beispiel z
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -329,7 +329,7 @@ Um das zu machen, deklarieren Sie eine Liste von `bytes` oder `UploadFile`s:
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -343,7 +343,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -357,7 +357,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 Sie erhalten, wie deklariert, eine `list`e von `bytes` oder `UploadFile`s.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette.responses import HTMLResponse` verwenden.
 
@@ -387,7 +387,7 @@ Und so wie zuvor können Sie `File()` verwenden, um zusätzliche Parameter zu se
 
 //// tab | Python 3.9+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -401,7 +401,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index 2b89edbb401e43f31712e3c63f6c46ee041fdea3..bdd1e0fac28996900d01a3da307debbb1054d565 100644 (file)
@@ -30,7 +30,7 @@ Z. B. `pip install python-multipart`.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -64,7 +64,7 @@ Erstellen Sie Datei- und Formularparameter, so wie Sie es auch mit `Body` und `Q
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -80,7 +80,7 @@ Die Datei- und Formularfelder werden als Formulardaten hochgeladen, und Sie erha
 
 Und Sie können einige der Dateien als `bytes` und einige als `UploadFile` deklarieren.
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Sie können mehrere `File`- und `Form`-Parameter in einer *Pfadoperation* deklarieren, aber Sie können nicht gleichzeitig auch `Body`-Felder deklarieren, welche Sie als JSON erwarten, da der Request den Body mittels `multipart/form-data` statt `application/json` kodiert.
 
index 0784aa8c0437b3e81bfa0984a9f4aa45fd2abf72..2b6aeb41c2965edabada801c6b3dd553c444c221 100644 (file)
@@ -32,7 +32,7 @@ Importieren Sie `Form` von `fastapi`:
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -66,7 +66,7 @@ Erstellen Sie Formular-Parameter, so wie Sie es auch mit `Body` und `Query` mach
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -90,7 +90,7 @@ Mit `Form` haben Sie die gleichen Konfigurationsmöglichkeiten wie mit `Body` (u
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um Formularbodys zu deklarieren, verwenden Sie explizit `Form`, da diese Parameter sonst als Query-Parameter oder Body(-JSON)-Parameter interpretiert werden würden.
 
@@ -102,7 +102,7 @@ HTML-Formulare (`<form></form>`) senden die Daten in einer „speziellen“ Kodi
 
 **FastAPI** stellt sicher, dass diese Daten korrekt ausgelesen werden, statt JSON zu erwarten.
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Daten aus Formularen werden normalerweise mit dem <abbr title='Media type – Medientyp, Typ des Mediums'>„media type“</abbr> `application/x-www-form-urlencoded` kodiert.
 
@@ -112,7 +112,7 @@ Wenn Sie mehr über Formularfelder und ihre Kodierungen lesen möchten, besuchen
 
 ///
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Sie können mehrere `Form`-Parameter in einer *Pfadoperation* deklarieren, aber Sie können nicht gleichzeitig auch `Body`-Felder deklarieren, welche Sie als JSON erwarten, da der Request den Body mittels `application/x-www-form-urlencoded` statt `application/json` kodiert.
 
index 31ad73c77042c07f35f86f16824f9cc82409f968..aa27e072670a6ab486b6eda7f6fa4151839fee84 100644 (file)
@@ -83,7 +83,7 @@ Sie können `response_model` in jeder möglichen *Pfadoperation* verwenden:
 
 ////
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass `response_model` ein Parameter der „Dekorator“-Methode ist (`get`, `post`, usw.). Nicht der *Pfadoperation-Funktion*, so wie die anderen Parameter.
 
@@ -93,7 +93,7 @@ Beachten Sie, dass `response_model` ein Parameter der „Dekorator“-Methode is
 
 FastAPI wird dieses `response_model` nehmen, um die Daten zu dokumentieren, validieren, usw. und auch, um **die Ausgabedaten** entsprechend der Typdeklaration **zu konvertieren und filtern**.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie in Ihrem Editor strikte Typchecks haben, mypy, usw., können Sie den Funktions-Rückgabetyp als <abbr title='„Irgend etwas“'>`Any`</abbr> deklarieren.
 
@@ -162,7 +162,7 @@ Hier ist das möglicherweise kein Problem, da es derselbe Benutzer ist, der das
 
 Aber wenn wir dasselbe Modell für eine andere *Pfadoperation* verwenden, könnten wir das Passwort dieses Benutzers zu jedem Client schicken.
 
-/// danger | "Gefahr"
+/// danger | Gefahr
 
 Speichern Sie niemals das Klartext-Passwort eines Benutzers, oder versenden Sie es in einer Response wie dieser, wenn Sie sich nicht der resultierenden Gefahren bewusst sind und nicht wissen, was Sie tun.
 
@@ -503,7 +503,7 @@ dann ist FastAPI klug genug (tatsächlich ist Pydantic klug genug) zu erkennen,
 
 Diese Felder werden also in der JSON-Response enthalten sein.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass Defaultwerte alles Mögliche sein können, nicht nur `None`.
 
@@ -519,7 +519,7 @@ Diese nehmen ein `set` von `str`s entgegen, welches Namen von Attributen sind, d
 
 Das kann als schnelle Abkürzung verwendet werden, wenn Sie nur ein Pydantic-Modell haben und ein paar Daten von der Ausgabe ausschließen wollen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Es wird dennoch empfohlen, dass Sie die Ideen von oben verwenden, also mehrere Klassen statt dieser Parameter.
 
@@ -545,7 +545,7 @@ Das trifft auch auf `response_model_by_alias` zu, welches ähnlich funktioniert.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die Syntax `{"name", "description"}` erzeugt ein `set` mit diesen zwei Werten.
 
index 5f017355bc722a0443bc7fe8d5ded1c1e8db17e7..a1b388a0a3b6b881d9f7f68a8082d53fe15717c3 100644 (file)
@@ -10,7 +10,7 @@ So wie ein Responsemodell, können Sie auch einen HTTP-Statuscode für die Respo
 
 {* ../../docs_src/response_status_code/tutorial001.py hl[6] *}
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie, dass `status_code` ein Parameter der „Dekorator“-Methode ist (`get`, `post`, usw.). Nicht der *Pfadoperation-Funktion*, so wie die anderen Parameter und der Body.
 
@@ -31,7 +31,7 @@ Das wird:
 
 <img src="/img/tutorial/response-status-code/image01.png">
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Einige Responsecodes (siehe nächster Abschnitt) kennzeichnen, dass die Response keinen Body hat.
 
@@ -41,7 +41,7 @@ FastAPI versteht das und wird in der OpenAPI-Dokumentation anzeigen, dass es kei
 
 ## Über HTTP-Statuscodes
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Wenn Sie bereits wissen, was HTTP-Statuscodes sind, überspringen Sie dieses Kapitel und fahren Sie mit dem nächsten fort.
 
@@ -64,7 +64,7 @@ Kurz:
     * Für allgemeine Fehler beim Client können Sie einfach `400` verwenden.
 * `500` und darüber stehen für Server-Fehler. Diese verwenden Sie fast nie direkt. Wenn etwas an irgendeiner Stelle in Ihrem Anwendungscode oder im Server schiefläuft, wird automatisch einer dieser Fehler-Statuscodes zurückgegeben.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Um mehr über Statuscodes zu lernen, und welcher wofür verwendet wird, lesen Sie die <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network – Mozilla-Entwickler-Netzwerk">MDN</abbr> Dokumentation über HTTP-Statuscodes</a>.
 
@@ -88,7 +88,7 @@ Diese sind nur eine Annehmlichkeit und enthalten dieselbe Nummer, aber auf diese
 
 <img src="/img/tutorial/response-status-code/image02.png">
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie können auch `from starlette import status` verwenden.
 
index ae3b987090916858d30f3dbf915c7e40c4e01a13..f065ad4caaa514a2794317ceb4454271e85a6506 100644 (file)
@@ -38,7 +38,7 @@ Sie können `schema_extra` setzen, mit einem `dict`, das alle zusätzlichen Date
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Mit derselben Technik können Sie das JSON-Schema erweitern und Ihre eigenen benutzerdefinierten Zusatzinformationen hinzufügen.
 
@@ -143,7 +143,7 @@ Wenn `openapi_examples` zu `Body()` hinzugefügt wird, würde `/docs` so aussehe
 
 ## Technische Details
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie bereits **FastAPI** Version **0.99.0 oder höher** verwenden, können Sie diese Details wahrscheinlich **überspringen**.
 
@@ -153,7 +153,7 @@ Sie können dies als eine kurze **Geschichtsstunde** zu OpenAPI und JSON Schema
 
 ///
 
-/// warning | "Achtung"
+/// warning | Achtung
 
 Dies sind sehr technische Details zu den Standards **JSON Schema** und **OpenAPI**.
 
index c552a681bea4347af357dd1befdcdd7e0d5ecb5c..935b8eccaef44801e39d2d9447ab36da8a3c76c5 100644 (file)
@@ -38,7 +38,7 @@ Kopieren Sie das Beispiel in eine Datei `main.py`:
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -82,7 +82,7 @@ Sie werden etwa Folgendes sehen:
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | "Authorize-Button!"
+/// check | Authorize-Button!
 
 Sie haben bereits einen glänzenden, neuen „Authorize“-Button.
 
@@ -94,7 +94,7 @@ Und wenn Sie darauf klicken, erhalten Sie ein kleines Anmeldeformular zur Eingab
 
 <img src="/img/tutorial/security/image02.png">
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Es spielt keine Rolle, was Sie in das Formular eingeben, es wird noch nicht funktionieren. Wir kommen dahin.
 
@@ -172,7 +172,7 @@ Wenn wir eine Instanz der Klasse `OAuth2PasswordBearer` erstellen, übergeben wi
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -184,7 +184,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Hier bezieht sich `tokenUrl="token"` auf eine relative URL `token`, die wir noch nicht erstellt haben. Da es sich um eine relative URL handelt, entspricht sie `./token`.
 
@@ -238,7 +238,7 @@ Jetzt können Sie dieses `oauth2_scheme` als Abhängigkeit `Depends` übergeben.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -254,7 +254,7 @@ Diese Abhängigkeit stellt einen `str` bereit, der dem Parameter `token` der *Pf
 
 **FastAPI** weiß, dass es diese Abhängigkeit verwenden kann, um ein „Sicherheitsschema“ im OpenAPI-Schema (und der automatischen API-Dokumentation) zu definieren.
 
-/// info | "Technische Details"
+/// info | Technische Details
 
 **FastAPI** weiß, dass es die Klasse `OAuth2PasswordBearer` (deklariert in einer Abhängigkeit) verwenden kann, um das Sicherheitsschema in OpenAPI zu definieren, da es von `fastapi.security.oauth2.OAuth2` erbt, das wiederum von `fastapi.security.base.SecurityBase` erbt.
 
index a9478a36e95d8b4f09d9ee9502bf8b72cc82e95d..5f28f231f7e76adb7417d105639b73aec2e2061f 100644 (file)
@@ -20,7 +20,7 @@ Im vorherigen Kapitel hat das Sicherheitssystem (das auf dem Dependency Injectio
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -68,7 +68,7 @@ So wie wir Pydantic zum Deklarieren von Bodys verwenden, können wir es auch üb
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -82,7 +82,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -130,7 +130,7 @@ So wie wir es zuvor in der *Pfadoperation* direkt gemacht haben, erhält unsere
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -144,7 +144,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -186,7 +186,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -200,7 +200,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -242,7 +242,7 @@ Und jetzt können wir wiederum `Depends` mit unserem `get_current_user` in der *
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -256,7 +256,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -272,7 +272,7 @@ Beachten Sie, dass wir als Typ von `current_user` das Pydantic-Modell `User` dek
 
 Das wird uns innerhalb der Funktion bei Codevervollständigung und Typprüfungen helfen.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Sie erinnern sich vielleicht, dass Requestbodys ebenfalls mit Pydantic-Modellen deklariert werden.
 
@@ -346,7 +346,7 @@ Und alle diese Tausenden von *Pfadoperationen* können nur drei Zeilen lang sein
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -360,7 +360,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index ad09273610bf01bd974dc44e2a2ccef4357241a8..b0124390174da4672e077b1d7dd27a90bf48ac0c 100644 (file)
@@ -32,7 +32,7 @@ Heutzutage ist es nicht sehr populär und wird kaum verwendet.
 
 OAuth2 spezifiziert nicht, wie die Kommunikation verschlüsselt werden soll, sondern erwartet, dass Ihre Anwendung mit HTTPS bereitgestellt wird.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Im Abschnitt über **Deployment** erfahren Sie, wie Sie HTTPS mithilfe von Traefik und Let's Encrypt kostenlos einrichten.
 
@@ -89,7 +89,7 @@ OpenAPI definiert die folgenden Sicherheitsschemas:
     * Diese automatische Erkennung ist es, die in der OpenID Connect Spezifikation definiert ist.
 
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Auch die Integration anderer Authentifizierungs-/Autorisierungsanbieter wie Google, Facebook, Twitter, GitHub, usw. ist möglich und relativ einfach.
 
index 79e8178408bdd149d38bf527086bf71f611c0099..25c1e1c975950adffb414f5e5536df41e7e846df 100644 (file)
@@ -44,7 +44,7 @@ $ pip install "python-jose[cryptography]"
 
 Hier verwenden wir das empfohlene: <a href="https://cryptography.io/" class="external-link" target="_blank">pyca/cryptography</a>.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Dieses Tutorial verwendete zuvor <a href="https://pyjwt.readthedocs.io/" class="external-link" target="_blank">PyJWT</a>.
 
@@ -86,7 +86,7 @@ $ pip install "passlib[bcrypt]"
 
 </div>
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Mit `passlib` können Sie sogar konfigurieren, Passwörter zu lesen, die von **Django**, einem **Flask**-Sicherheit-Plugin, oder vielen anderen erstellt wurden.
 
@@ -102,7 +102,7 @@ Importieren Sie die benötigten Tools aus `passlib`.
 
 Erstellen Sie einen PassLib-„Kontext“. Der wird für das Hashen und Verifizieren von Passwörtern verwendet.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Der PassLib-Kontext kann auch andere Hashing-Algorithmen verwenden, einschließlich deprecateter Alter, um etwa nur eine Verifizierung usw. zu ermöglichen.
 
@@ -144,7 +144,7 @@ Und noch eine, um einen Benutzer zu authentifizieren und zurückzugeben.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -158,7 +158,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -170,7 +170,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Wenn Sie sich die neue (gefakte) Datenbank `fake_users_db` anschauen, sehen Sie, wie das gehashte Passwort jetzt aussieht: `"$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW"`.
 
@@ -230,7 +230,7 @@ Erstellen Sie eine Hilfsfunktion, um einen neuen Zugriffstoken zu generieren.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -244,7 +244,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -290,7 +290,7 @@ Wenn der Token ungültig ist, geben Sie sofort einen HTTP-Fehler zurück.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -304,7 +304,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -348,7 +348,7 @@ Erstellen Sie einen echten JWT-Zugriffstoken und geben Sie ihn zurück.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -362,7 +362,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -436,7 +436,7 @@ Wenn Sie die Developer Tools öffnen, können Sie sehen, dass die gesendeten Dat
 
 <img src="/img/tutorial/security/image10.png">
 
-/// note | "Hinweis"
+/// note | Hinweis
 
 Beachten Sie den Header `Authorization` mit einem Wert, der mit `Bearer` beginnt.
 
index 4c20fae5570fbb331e3bb7f659643ac00e735a8f..2fa1385b0371057166f6b8987aea30ac1d9ec23c 100644 (file)
@@ -78,7 +78,7 @@ Importieren Sie zunächst `OAuth2PasswordRequestForm` und verwenden Sie es als A
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -92,7 +92,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -111,7 +111,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 * Einem optionalen `scope`-Feld als langem String, bestehend aus durch Leerzeichen getrennten Strings.
 * Einem optionalen `grant_type` („Art der Anmeldung“).
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die OAuth2-Spezifikation *erfordert* tatsächlich ein Feld `grant_type` mit dem festen Wert `password`, aber `OAuth2PasswordRequestForm` erzwingt dies nicht.
 
@@ -136,7 +136,7 @@ Da es sich jedoch um einen häufigen Anwendungsfall handelt, wird er zur Vereinf
 
 ### Die Formulardaten verwenden
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Die Instanz der Klassenabhängigkeit `OAuth2PasswordRequestForm` verfügt, statt eines Attributs `scope` mit dem durch Leerzeichen getrennten langen String, über das Attribut `scopes` mit einer tatsächlichen Liste von Strings, einem für jeden gesendeten Scope.
 
@@ -176,7 +176,7 @@ Für den Fehler verwenden wir die Exception `HTTPException`:
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -190,7 +190,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -252,7 +252,7 @@ Der Dieb kann also nicht versuchen, die gleichen Passwörter in einem anderen Sy
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -266,7 +266,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -310,7 +310,7 @@ Und es sollte einen `access_token` haben, mit einem String, der unseren Zugriffs
 
 In diesem einfachen Beispiel gehen wir einfach völlig unsicher vor und geben denselben `username` wie der Token zurück.
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Im nächsten Kapitel sehen Sie eine wirklich sichere Implementierung mit Passwort-Hashing und <abbr title="JSON Web Tokens">JWT</abbr>-Tokens.
 
@@ -344,7 +344,7 @@ Aber konzentrieren wir uns zunächst auf die spezifischen Details, die wir benö
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -358,7 +358,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -370,7 +370,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 ////
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Gemäß der Spezifikation sollten Sie ein JSON mit einem `access_token` und einem `token_type` zurückgeben, genau wie in diesem Beispiel.
 
@@ -420,7 +420,7 @@ In unserem Endpunkt erhalten wir also nur dann einen Benutzer, wenn der Benutzer
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -434,7 +434,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index 4afd251aa04e10a908e1e4fb575d0a471ff659a2..aa44e3f4e4afb7a554c4547efa7c17de4c4a5417 100644 (file)
@@ -11,7 +11,7 @@ Mit `StaticFiles` können Sie statische Dateien aus einem Verzeichnis automatisc
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie könnten auch `from starlette.staticfiles import StaticFiles` verwenden.
 
index bda6d7d60779f6fdf4b67e11a31fd938ca23872d..53459342b94825b6b94ae978d2b1d80dae7fb89d 100644 (file)
@@ -30,7 +30,7 @@ Schreiben Sie einfache `assert`-Anweisungen mit den Standard-Python-Ausdrücken,
 {!../../docs_src/app_testing/tutorial001.py!}
 ```
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Beachten Sie, dass die Testfunktionen normal `def` und nicht `async def` sind.
 
@@ -40,7 +40,7 @@ Dadurch können Sie `pytest` ohne Komplikationen direkt nutzen.
 
 ///
 
-/// note | "Technische Details"
+/// note | Technische Details
 
 Sie könnten auch `from starlette.testclient import TestClient` verwenden.
 
@@ -48,7 +48,7 @@ Sie könnten auch `from starlette.testclient import TestClient` verwenden.
 
 ///
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Wenn Sie in Ihren Tests neben dem Senden von Anfragen an Ihre FastAPI-Anwendung auch `async`-Funktionen aufrufen möchten (z. B. asynchrone Datenbankfunktionen), werfen Sie einen Blick auf die [Async-Tests](../advanced/async-tests.md){.internal-link target=_blank} im Handbuch für fortgeschrittene Benutzer.
 
@@ -148,7 +148,7 @@ Beide *Pfadoperationen* erfordern einen `X-Token`-Header.
 
 //// tab | Python 3.10+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
@@ -162,7 +162,7 @@ Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
 //// tab | Python 3.8+ nicht annotiert
 
-/// tip | "Tipp"
+/// tip | Tipp
 
 Bevorzugen Sie die `Annotated`-Version, falls möglich.
 
index 7a50e1bcadbfdf76fcebc512d6500893b832995f..5eb2ec90ec784dc1f4ce468ec032ee8fd4113515 100644 (file)
@@ -28,7 +28,7 @@
 
 ///
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.responses import JSONResponse`.
 
index e66ddccf75a3f9f87bd9ae9c16eae5505413f593..36aa2e6b312df1c2bb3bb654daf8134bc4f034e8 100644 (file)
@@ -80,7 +80,7 @@ $ uvicorn main:app --root-path /api/v1
 
 🚥 👆 ⚙️ Hypercorn, ⚫️ ✔️ 🎛 `--root-path`.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 🔫 🔧 🔬 `root_path` 👉 ⚙️ 💼.
 
index 7147a45360d004ad17cdb880ee69d61d55fd7d15..301f99957f47292fb614512d14076ae088df5c91 100644 (file)
 
 ✔️ 🤯 👈 👆 💪 ⚙️ `Response` 📨 🕳 🙆, ⚖️ ✍ 🛃 🎧-🎓.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.responses import HTMLResponse`.
 
index 23d2918d74f6728958b0cdfe0434e760ab9a00ef..914ce4a30c0747290ec8282555addc0e7728305a 100644 (file)
@@ -43,7 +43,7 @@ app.add_middleware(UnicornMiddleware, some_config="rainbow")
 
 **FastAPI** 🔌 📚 🛠️ ⚠ ⚙️ 💼, 👥 🔜 👀 ⏭ ❔ ⚙️ 👫.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 ⏭ 🖼, 👆 💪 ⚙️ `from starlette.middleware.something import SomethingMiddleware`.
 
index 805bfdf30e8bb9595398110b2a62a3bd56e029a0..47e89a90fe43562891420119ad910e52abc3e5d1 100644 (file)
@@ -74,7 +74,7 @@
 
 🕐❔ 👆 📣 *➡ 🛠️* 👆 🈸, **FastAPI** 🔁 🏗 🔗 🗃 🔃 👈 *➡ 🛠️* 🔌 🗄 🔗.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 🗄 🔧 ⚫️ 🤙 <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object" class="external-link" target="_blank">🛠️ 🎚</a>.
 
index 6b9e9a4d98d33721cec5b9607722ce347a9c5948..0fe47baec604cc8c62a5f76e27809d98069f220e 100644 (file)
@@ -42,7 +42,7 @@
 
 ### 🌅 ℹ
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.responses import Response` ⚖️ `from starlette.responses import JSONResponse`.
 
index dcffc56c61892ebbdebf78d8bfa2a90fb85a2fb6..335c381c7f254c08cf20bc9f5f53edbdc6639f98 100644 (file)
@@ -38,7 +38,7 @@
 {!../../docs_src/response_directly/tutorial001.py!}
 ```
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.responses import JSONResponse`.
 
index cbbbae23788d9b4f0f8a19aa40e5a591b34c26e4..d577347feebe095f436284b64fb77c6187853e06 100644 (file)
@@ -28,7 +28,7 @@
 {!../../docs_src/response_headers/tutorial001.py!}
 ```
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.responses import Response` ⚖️ `from starlette.responses import JSONResponse`.
 
index 661be034e5f9012f5a802fabd69937432acf524f..f4d1a3b820407419e0d3d05ad8e7233bf529ffbf 100644 (file)
@@ -134,7 +134,7 @@ Oauth2️⃣ 👫 🎻.
 {!../../docs_src/security/tutorial005.py!}
 ```
 
-/// info | "📡 ℹ"
+/// info | 📡 ℹ
 
 `Security` 🤙 🏿 `Depends`, &amp; ⚫️ ✔️ 1️⃣ ➕ 🔢 👈 👥 🔜 👀 ⏪.
 
index 66c7484a6d65db06d8530a5a58d85ddc42460794..53428151d97baae71e322cc8ada7de3b60cbe3c2 100644 (file)
@@ -43,7 +43,7 @@ $ pip install jinja2
 
 ///
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.templating import Jinja2Templates`.
 
index ae212364f259ab2ef134b06a5af7df64484a374f..3eb0067ad8905415d7034897d5bbf67583a7b3ed 100644 (file)
@@ -49,7 +49,7 @@
 
 👆 💪 ✍ 🌅 ℹ 🔃 <a href="https://www.starlette.io/requests/" class="external-link" target="_blank">`Request` 🎚 🛂 💃 🧾 🕸</a>.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.requests import Request`.
 
index 7957eba1ff721a4889211c7c7dc27d443ea1e157..4b260e20ab9c4fb12c5a213ccd375c94a953a2d3 100644 (file)
@@ -50,7 +50,7 @@ $ pip install websockets
 {!../../docs_src/websockets/tutorial001.py!}
 ```
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.websockets import WebSocket`.
 
index 5309de51f6956b8f21cb832b80922a3ba9695d40..59b58728520a91a6fd5a751fae3423aebad02d0c 100644 (file)
@@ -36,7 +36,7 @@
 
 ///
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 ✔️ 🏧 🛠️ 🧾 🕸 👩‍💻 🔢.
 
@@ -56,7 +56,7 @@
 
 👐 🦁 🏺, ⚫️ 😑 💖 👍 🏏 🏗 🔗. ⏭ 👜 🔎 "✳ 🎂 🛠️" 🏺.
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 ◾-🛠️. ⚒ ⚫️ ⏩ 🌀 &amp; 🏏 🧰 &amp; 🍕 💪.
 
@@ -98,7 +98,7 @@ def read_url():
 
 👀 🔀 `requests.get(...)` &amp; `@app.get(...)`.
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 * ✔️ 🙅 &amp; 🏋️ 🛠️.
 * ⚙️ 🇺🇸🔍 👩‍🔬 📛 (🛠️) 🔗, 🎯 &amp; 🏋️ 🌌.
@@ -118,7 +118,7 @@ def read_url():
 
 👈 ⚫️❔ 🕐❔ 💬 🔃 ⏬ 2️⃣.0️⃣ ⚫️ ⚠ 💬 "🦁", &amp; ⏬ 3️⃣ ➕ "🗄".
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 🛠️ &amp; ⚙️ 📂 🐩 🛠️ 🔧, ↩️ 🛃 🔗.
 
@@ -147,7 +147,7 @@ def read_url():
 
 ✋️ ⚫️ ✍ ⏭ 📤 🔀 🐍 🆎 🔑. , 🔬 🔠 <abbr title="the definition of how data should be formed">🔗</abbr> 👆 💪 ⚙️ 🎯 🇨🇻 &amp; 🎓 🚚 🍭.
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 ⚙️ 📟 🔬 "🔗" 👈 🚚 💽 🆎 &amp; 🔬, 🔁.
 
@@ -169,7 +169,7 @@ Webarg ✍ 🎏 🍭 👩‍💻.
 
 ///
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 ✔️ 🏧 🔬 📨 📨 💽.
 
@@ -199,7 +199,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 ///
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 🐕‍🦺 📂 🐩 🛠️, 🗄.
 
@@ -231,7 +231,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 ///
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 🏗 🗄 🔗 🔁, ⚪️➡️ 🎏 📟 👈 🔬 🛠️ &amp; 🔬.
 
@@ -251,7 +251,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 ⚫️ 💪 🚫 🍵 🔁 🏷 📶 👍. , 🚥 🎻 💪 📨 🎻 🎚 👈 ✔️ 🔘 🏑 👈 🔄 🐦 🎻 🎚, ⚫️ 🚫🔜 ☑ 📄 &amp; ✔.
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 ⚙️ 🐍 🆎 ✔️ 👑 👨‍🎨 🐕‍🦺.
 
@@ -263,7 +263,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 ⚫️ 🕐 🥇 📶 ⏩ 🐍 🛠️ ⚓️ 🔛 `asyncio`. ⚫️ ⚒ 📶 🎏 🏺.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 ⚫️ ⚙️ <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> ↩️ 🔢 🐍 `asyncio` ➰. 👈 ⚫️❔ ⚒ ⚫️ ⏩.
 
@@ -271,7 +271,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 ///
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 🔎 🌌 ✔️ 😜 🎭.
 
@@ -287,7 +287,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 , 💽 🔬, 🛠️, &amp; 🧾, ✔️ ⌛ 📟, 🚫 🔁. ⚖️ 👫 ✔️ 🛠️ 🛠️ 🔛 🔝 🦅, 💖 🤗. 👉 🎏 🔺 🔨 🎏 🛠️ 👈 😮 🦅 🔧, ✔️ 1️⃣ 📨 🎚 &amp; 1️⃣ 📨 🎚 🔢.
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 🔎 🌌 🤚 👑 🎭.
 
@@ -313,7 +313,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 🛣 📣 👁 🥉, ⚙️ 🔢 📣 🎏 🥉 (↩️ ⚙️ 👨‍🎨 👈 💪 🥉 ▶️️ 🔛 🔝 🔢 👈 🍵 🔗). 👉 🔐 ❔ ✳ 🔨 ⚫️ 🌘 ❔ 🏺 (&amp; 💃) 🔨 ⚫️. ⚫️ 🎏 📟 👜 👈 📶 😆 🔗.
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 🔬 ➕ 🔬 💽 🆎 ⚙️ "🔢" 💲 🏷 🔢. 👉 📉 👨‍🎨 🐕‍🦺, &amp; ⚫️ 🚫 💪 Pydantic ⏭.
 
@@ -341,7 +341,7 @@ APISpec ✍ 🎏 🍭 👩‍💻.
 
 ///
 
-/// check | "💭 😮 **FastAPI**"
+/// check | 💭 😮 **FastAPI**
 
 🤗 😮 🍕 APIStar, &amp; 1️⃣ 🧰 👤 🔎 🏆 👍, 🌟 APIStar.
 
@@ -385,7 +385,7 @@ APIStar ✍ ✡ 🇺🇸🏛. 🎏 👨 👈 ✍:
 
 ///
 
-/// check | "😮 **FastAPI** "
+/// check | 😮 **FastAPI**
 
 🔀.
 
@@ -409,7 +409,7 @@ Pydantic 🗃 🔬 💽 🔬, 🛠️ &amp; 🧾 (⚙️ 🎻 🔗) ⚓️ 🔛
 
 ⚫️ ⭐ 🍭. 👐 ⚫️ ⏩ 🌘 🍭 📇. &amp; ⚫️ ⚓️ 🔛 🎏 🐍 🆎 🔑, 👨‍🎨 🐕‍🦺 👑.
 
-/// check | "**FastAPI** ⚙️ ⚫️"
+/// check | **FastAPI** ⚙️ ⚫️
 
 🍵 🌐 💽 🔬, 💽 🛠️ &amp; 🏧 🏷 🧾 (⚓️ 🔛 🎻 🔗).
 
@@ -444,7 +444,7 @@ Pydantic 🗃 🔬 💽 🔬, 🛠️ &amp; 🧾 (⚙️ 🎻 🔗) ⚓️ 🔛
 
 👈 1️⃣ 👑 👜 👈 **FastAPI** 🚮 🔛 🔝, 🌐 ⚓️ 🔛 🐍 🆎 🔑 (⚙️ Pydantic). 👈, ➕ 🔗 💉 ⚙️, 💂‍♂ 🚙, 🗄 🔗 ⚡, ♒️.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 🔫 🆕 "🐩" ➖ 🛠️ ✳ 🐚 🏉 👨‍🎓. ⚫️ 🚫 "🐍 🐩" (🇩🇬), 👐 👫 🛠️ 🔨 👈.
 
@@ -452,7 +452,7 @@ Pydantic 🗃 🔬 💽 🔬, 🛠️ &amp; 🧾 (⚙️ 🎻 🔗) ⚓️ 🔛
 
 ///
 
-/// check | "**FastAPI** ⚙️ ⚫️"
+/// check | **FastAPI** ⚙️ ⚫️
 
 🍵 🌐 🐚 🕸 🍕. ❎ ⚒ 🔛 🔝.
 
@@ -470,7 +470,7 @@ Uvicorn 🌩-⏩ 🔫 💽, 🏗 🔛 uvloop &amp; httptool.
 
 ⚫️ 👍 💽 💃 &amp; **FastAPI**.
 
-/// check | "**FastAPI** 👍 ⚫️"
+/// check | **FastAPI** 👍 ⚫️
 
 👑 🕸 💽 🏃 **FastAPI** 🈸.
 
index 0425e6267c49437aeff16048245b6d5b6877cf0a..cd8811d4eb3019074addb59ca6a089f176675f20 100644 (file)
@@ -60,7 +60,7 @@
 {!../../docs_src/custom_request_and_route/tutorial001.py!}
 ```
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 `Request` ✔️ `request.scope` 🔢, 👈 🐍 `dict` ⚗ 🗃 🔗 📨.
 
index 074ab302c8336d8274f1dabe6c2eaa34f82464d0..68f506f27ecd7a60b33f015c651e49b9219cae55 100644 (file)
@@ -414,7 +414,7 @@ from .routers.users import router
 
 ⚫️ 🔜 🔌 🌐 🛣 ⚪️➡️ 👈 📻 🍕 ⚫️.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 ⚫️ 🔜 🤙 🔘 ✍ *➡ 🛠️* 🔠 *➡ 🛠️* 👈 📣 `APIRouter`.
 
@@ -477,7 +477,7 @@ from .routers.users import router
 
 &amp; ⚫️ 🔜 👷 ☑, 👯‍♂️ ⏮️ 🌐 🎏 *➡ 🛠️* 🚮 ⏮️ `app.include_router()`.
 
-/// info | "📶 📡 ℹ"
+/// info | 📶 📡 ℹ
 
 **🗒**: 👉 📶 📡 ℹ 👈 👆 🎲 💪 **🚶**.
 
index eb3093de2725a7c426880a7ba1c8a1ca6099bba4..be39b4a9a296d4385fcc7602fad744e94ef39933 100644 (file)
@@ -50,7 +50,7 @@
 
 `Field` 👷 🎏 🌌 `Query`, `Path` &amp; `Body`, ⚫️ ✔️ 🌐 🎏 🔢, ♒️.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 🤙, `Query`, `Path` &amp; 🎏 👆 🔜 👀 ⏭ ✍ 🎚 🏿 ⚠ `Param` 🎓, ❔ ⚫️ 🏿 Pydantic `FieldInfo` 🎓.
 
index f4956e76f3e129d6c6731414b74989c2ac2cf161..5126eab0a8ff5bd9218f089666f49e131bc95204 100644 (file)
@@ -44,7 +44,7 @@
 
 ////
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 `Cookie` "👭" 🎓 `Path` &amp; `Query`. ⚫️ 😖 ⚪️➡️ 🎏 ⚠ `Param` 🎓.
 
index 5829319cb2a15adb338266a78ad641271086db39..801d66fdda203e22a102948c76c0489a00145827 100644 (file)
@@ -78,7 +78,7 @@
 
 🌖 ℹ 🔃 <abbr title="Cross-Origin Resource Sharing">⚜</abbr>, ✅ <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">🦎 ⚜ 🧾</a>.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.middleware.cors import CORSMiddleware`.
 
index e0d6dba24ebba3c9cb1963ab025756f96c0fc0f7..2896be39da52b2c0e51cbdb4916c9d89fc564962 100644 (file)
@@ -10,7 +10,7 @@ FastAPI 🐕‍🦺 🔗 👈 <abbr title='sometimes also called "exit", "cleanu
 
 ///
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 🙆 🔢 👈 ☑ ⚙️ ⏮️:
 
@@ -97,7 +97,7 @@ FastAPI 🐕‍🦺 🔗 👈 <abbr title='sometimes also called "exit", "cleanu
 
 **FastAPI** 🔜 ⚒ 💭 🌐 🏃 ☑ ✔.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👉 👷 👏 🐍 <a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">🔑 👨‍💼</a>.
 
index d8cc05c40593cb76633523c7752a0b12b3758dd5..d6762422e46fc17cb1bd82bd543e4d122d767764 100644 (file)
@@ -139,7 +139,7 @@ INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
 
 `FastAPI` 🐍 🎓 👈 🚚 🌐 🛠️ 👆 🛠️.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 `FastAPI` 🎓 👈 😖 🔗 ⚪️➡️ `Starlette`.
 
@@ -259,7 +259,7 @@ https://example.com/items/foo
 * ➡ `/`
 * ⚙️ <abbr title="an HTTP GET method"><code>get</code> 🛠️</abbr>
 
-/// info | "`@decorator` ℹ"
+/// info | `@decorator` ℹ
 
 👈 `@something` ❕ 🐍 🤙 "👨‍🎨".
 
index 7f6a704eb08568dd790e630437d62b00bc2c3f0d..e0edae51a6d278ea451eb11a9fdb0307db4a3a6b 100644 (file)
 {"message": "Oops! yolo did something. There goes a rainbow..."}
 ```
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.requests import Request` &amp; `from starlette.responses import JSONResponse`.
 
@@ -192,7 +192,7 @@ path -> item_id
 {!../../docs_src/handling_errors/tutorial004.py!}
 ```
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.responses import PlainTextResponse`.
 
index 34abd3a4c0f1aff6f6de35d55b16a06ee1363bb0..d9eafe77ef463e10987836eca69ae3f4beae86dd 100644 (file)
@@ -44,7 +44,7 @@
 
 ////
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 `Header` "👭" 🎓 `Path`, `Query` &amp; `Cookie`. ⚫️ 😖 ⚪️➡️ 🎏 ⚠ `Param` 🎓.
 
index cd0777ebbb09d3431be62c825f865f22a35fd631..a794ab0190743e15e7a4973a29d531cfa486d1b0 100644 (file)
@@ -11,7 +11,7 @@
 * ⚫️ 💪 🕳 👈 **📨** ⚖️ 🏃 🙆 💪 📟.
 * ⤴️ ⚫️ 📨 **📨**.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 🚥 👆 ✔️ 🔗 ⏮️ `yield`, 🚪 📟 🔜 🏃 *⏮️* 🛠️.
 
@@ -43,7 +43,7 @@
 
 ///
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.requests import Request`.
 
index 9529928fbf12d7430a5a87e67179472dfb4e4a0d..deb71c807351e1e4b1ef7ea9ed04dbfc6d521167 100644 (file)
@@ -42,7 +42,7 @@
 
 👈 👔 📟 🔜 ⚙️ 📨 &amp; 🔜 🚮 🗄 🔗.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette import status`.
 
index c25f0323e96c9de4f186f4dda01478ef2b100c79..74dbb55f7f49a590c524e57e516a5eebce297d1d 100644 (file)
 
 ///
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 🕐❔ 👆 🗄 `Query`, `Path` &amp; 🎏 ⚪️➡️ `fastapi`, 👫 🤙 🔢.
 
index 102690f4bd46eaad949a9ab96d6e040b219def7b..9dcad81b48854c14434d91f727d3f41aa242bccf 100644 (file)
@@ -99,13 +99,13 @@ contents = await myfile.read()
 contents = myfile.file.read()
 ```
 
-/// note | "`async` 📡 ℹ"
+/// note | `async` 📡 ℹ
 
 🕐❔ 👆 ⚙️ `async` 👩‍🔬, **FastAPI** 🏃 📁 👩‍🔬 🧵 &amp; ⌛ 👫.
 
 ///
 
-/// note | "💃 📡 ℹ"
+/// note | 💃 📡 ℹ
 
 **FastAPI**'Ⓜ `UploadFile` 😖 🔗 ⚪️➡️ **💃**'Ⓜ `UploadFile`, ✋️ 🚮 💪 🍕 ⚒ ⚫️ 🔗 ⏮️ **Pydantic** &amp; 🎏 🍕 FastAPI.
 
@@ -117,7 +117,7 @@ contents = myfile.file.read()
 
 **FastAPI** 🔜 ⚒ 💭 ✍ 👈 📊 ⚪️➡️ ▶️️ 🥉 ↩️ 🎻.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 📊 ⚪️➡️ 📨 🛎 🗜 ⚙️ "📻 🆎" `application/x-www-form-urlencoded` 🕐❔ ⚫️ 🚫 🔌 📁.
 
@@ -189,7 +189,7 @@ contents = myfile.file.read()
 
 👆 🔜 📨, 📣, `list` `bytes` ⚖️ `UploadFile`Ⓜ.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.responses import HTMLResponse`.
 
index cbe4e2862dad91ebb848c3230de5f34ab313dd7e..d364d2c927d54c550fed2e6cb9e30833a9b82055 100644 (file)
@@ -50,7 +50,7 @@
 
 **FastAPI** 🔜 ⚒ 💭 ✍ 👈 📊 ⚪️➡️ ▶️️ 🥉 ↩️ 🎻.
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 📊 ⚪️➡️ 📨 🛎 🗜 ⚙️ "📻 🆎" `application/x-www-form-urlencoded`.
 
index cefff708f331e9bac16405a4232d9dc1b7830274..478060326d86e2ca4f1af6d2709be60b5fdf8f61 100644 (file)
@@ -94,7 +94,7 @@ FastAPI 💭 👉, &amp; 🔜 🏭 🗄 🩺 👈 🇵🇸 📤 🙅‍♂ 📨
 
 <img src="/img/tutorial/response-status-code/image02.png">
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette import status`.
 
index 6245f52ab66fdbd912a2342c1120364181448865..21c48757faff1270251d8db04b5410c8eebff0b2 100644 (file)
@@ -56,7 +56,7 @@ $ uvicorn main:app --reload
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | "✔ 🔼 ❗"
+/// check | ✔ 🔼 ❗
 
 👆 ⏪ ✔️ ✨ 🆕 "✔" 🔼.
 
@@ -176,7 +176,7 @@ oauth2_scheme(some, parameters)
 
 **FastAPI** 🔜 💭 👈 ⚫️ 💪 ⚙️ 👉 🔗 🔬 "💂‍♂ ⚖" 🗄 🔗 (&amp; 🏧 🛠️ 🩺).
 
-/// info | "📡 ℹ"
+/// info | 📡 ℹ
 
 **FastAPI** 🔜 💭 👈 ⚫️ 💪 ⚙️ 🎓 `OAuth2PasswordBearer` (📣 🔗) 🔬 💂‍♂ ⚖ 🗄 ↩️ ⚫️ 😖 ⚪️➡️ `fastapi.security.oauth2.OAuth2`, ❔ 🔄 😖 ⚪️➡️ `fastapi.security.base.SecurityBase`.
 
index c59d8c13145fb1fc76a40033e2d5738429d82de7..49162dd627411ebd03e1378ff70490bf8e9e0653 100644 (file)
@@ -159,7 +159,7 @@ connect_args={"check_same_thread": False}
 
 ...💪 🕴 `SQLite`. ⚫️ 🚫 💪 🎏 💽.
 
-/// info | "📡 ℹ"
+/// info | 📡 ℹ
 
 🔢 🗄 🔜 🕴 ✔ 1️⃣ 🧵 🔗 ⏮️ ⚫️, 🤔 👈 🔠 🧵 🔜 🍵 🔬 📨.
 
@@ -622,7 +622,7 @@ current_user.items
 
 ////
 
-/// info | "📡 ℹ"
+/// info | 📡 ℹ
 
 🔢 `db` 🤙 🆎 `SessionLocal`, ✋️ 👉 🎓 (✍ ⏮️ `sessionmaker()`) "🗳" 🇸🇲 `Session`,, 👨‍🎨 🚫 🤙 💭 ⚫️❔ 👩‍🔬 🚚.
 
@@ -705,7 +705,7 @@ def read_user(user_id: int, db: Session = Depends(get_db)):
 
 ///
 
-/// note | "📶 📡 ℹ"
+/// note | 📶 📡 ℹ
 
 🚥 👆 😟 &amp; ✔️ ⏬ 📡 💡, 👆 💪 ✅ 📶 📡 ℹ ❔ 👉 `async def` 🆚 `def` 🍵 [🔁](../async.md#i_2){.internal-link target=_blank} 🩺.
 
index 0627031b3b8ef6175918f9882050dc9efe997cf4..c9bb9ff6aa9796f7c0bcf96bf24f133f55ed2cfb 100644 (file)
@@ -11,7 +11,7 @@
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.staticfiles import StaticFiles`.
 
index 5f3d5e736347937ce7b4f199f82c41f32e1db53b..27cf9f16e04621a3692b37b96bdd8dd6247359a3 100644 (file)
@@ -40,7 +40,7 @@
 
 ///
 
-/// note | "📡 ℹ"
+/// note | 📡 ℹ
 
 👆 💪 ⚙️ `from starlette.testclient import TestClient`.
 
index e392494679d01ec18588176acfd0d55c9d415cd1..077a00488a0965e2c3b0a6c5dfd2b496e6158400 100644 (file)
@@ -26,7 +26,7 @@ Make sure it has the data you want it to have, and that the values are valid JSO
 
 ///
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.responses import JSONResponse`.
 
index 87a62e88b7f5dd95f217b023b74cdba39f01ad38..1f0d0fd9f97575ea971b54eb914a62a664ab1f2f 100644 (file)
@@ -82,7 +82,7 @@ $ fastapi run main.py --root-path /api/v1
 
 If you use Hypercorn, it also has the option `--root-path`.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 The ASGI specification defines a `root_path` for this use case.
 
index 95152b9fe5a6e80bfe1e411ea6b6dbc34f254e65..8268dd81a9a4870b233feb1f56f629f2e6568471 100644 (file)
@@ -113,7 +113,7 @@ Here are some of the available responses.
 
 Keep in mind that you can use `Response` to return anything else, or even create a custom sub-class.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.responses import HTMLResponse`.
 
index 3faf3fbf91dca20cff82d1825e93edbe9773df19..1d40b1c8fc56804702c8a32dbd226158b3d1bbb1 100644 (file)
@@ -43,7 +43,7 @@ app.add_middleware(UnicornMiddleware, some_config="rainbow")
 
 **FastAPI** includes several middlewares for common use cases, we'll see next how to use them.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 For the next examples, you could also use `from starlette.middleware.something import SomethingMiddleware`.
 
index fea1e4db0cbee7b77d9778dbf47f88e93ae35e50..c4814ebd2f368415321ed4f04bfdaa263695f5f2 100644 (file)
@@ -66,7 +66,7 @@ There's a whole chapter here in the documentation about it, you can read it at [
 
 When you declare a *path operation* in your application, **FastAPI** automatically generates the relevant metadata about that *path operation* to be included in the OpenAPI schema.
 
-/// note | "Technical details"
+/// note | Technical details
 
 In the OpenAPI specification it is called the <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object" class="external-link" target="_blank">Operation Object</a>.
 
index 988394d06ed08fdcebe7ca1a2dde2334e211ddfd..f6d17f35d6e055e3b89ef8fdf60d45ba9bf9af4c 100644 (file)
@@ -38,7 +38,7 @@ And also that you are not sending any data that should have been filtered by a `
 
 ### More info
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.responses import Response` or `from starlette.responses import JSONResponse`.
 
index 09947a2ee7fbf6d74829d3df4dd24fec9bc691d3..691b1e7cdde763bcfc8c092ba455fe881462403e 100644 (file)
@@ -36,7 +36,7 @@ For those cases, you can use the `jsonable_encoder` to convert your data before
 
 {* ../../docs_src/response_directly/tutorial001.py hl[6:7,21:22] *}
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.responses import JSONResponse`.
 
index fca641d89cdf337fa2223b342bc2d5e501533613..97e888983b4c314d952de244638fea7ef1a68c6d 100644 (file)
@@ -24,7 +24,7 @@ Create a response as described in [Return a Response Directly](response-directly
 
 {* ../../docs_src/response_headers/tutorial001.py hl[10:12] *}
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.responses import Response` or `from starlette.responses import JSONResponse`.
 
index 5ba0b1c14e858521062b567c31e892bb61449a45..4cb0b39bc6ab5db2182944b2bdcbd52b4c809beb 100644 (file)
@@ -126,7 +126,7 @@ We are doing it here to demonstrate how **FastAPI** handles scopes declared at d
 
 {* ../../docs_src/security/tutorial005_an_py310.py hl[5,140,171] *}
 
-/// info | "Technical Details"
+/// info | Technical Details
 
 `Security` is actually a subclass of `Depends`, and it has just one extra parameter that we'll see later.
 
index d688c5cb7a03907ed366c9f99877a3220c4f17ee..76f0ef1dece1f15ca1bef10d5070aa99870d4c43 100644 (file)
@@ -45,7 +45,7 @@ By declaring `response_class=HTMLResponse` the docs UI will be able to know that
 
 ///
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.templating import Jinja2Templates`.
 
index 3e35734bc164e745c3f071d840f2b7b462c0a495..2f88c8f2062e4aebe978f0b80a2918f6ff1e3758 100644 (file)
@@ -47,7 +47,7 @@ The same way, you can declare any other parameter as normally, and additionally,
 
 You can read more details about the <a href="https://www.starlette.io/requests/" class="external-link" target="_blank">`Request` object in the official Starlette documentation site</a>.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.requests import Request`.
 
index 95a3947498bab270313afe9dc0fd1513ff8179ef..ee8e901dfbc19bb970dd3f7443cc1f2855d83d93 100644 (file)
@@ -46,7 +46,7 @@ In your **FastAPI** application, create a `websocket`:
 
 {* ../../docs_src/websockets/tutorial001.py hl[1,46:47] *}
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.websockets import WebSocket`.
 
index f596232d3fa359bc8d0eb2314b914e3e79e70166..326f0dbe1a718a4f9e5f2d7c0c1c69447016261c 100644 (file)
@@ -36,7 +36,7 @@ Django REST Framework was created by Tom Christie. The same creator of Starlette
 
 ///
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Have an automatic API documentation web user interface.
 
@@ -56,7 +56,7 @@ This decoupling of parts, and being a "microframework" that could be extended to
 
 Given the simplicity of Flask, it seemed like a good match for building APIs. The next thing to find was a "Django REST Framework" for Flask.
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Be a micro-framework. Making it easy to mix and match the tools and parts needed.
 
@@ -98,7 +98,7 @@ def read_url():
 
 See the similarities in `requests.get(...)` and `@app.get(...)`.
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 * Have a simple and intuitive API.
 * Use HTTP method names (operations) directly, in a straightforward and intuitive way.
@@ -118,7 +118,7 @@ At some point, Swagger was given to the Linux Foundation, to be renamed OpenAPI.
 
 That's why when talking about version 2.0 it's common to say "Swagger", and for version 3+ "OpenAPI".
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Adopt and use an open standard for API specifications, instead of a custom schema.
 
@@ -147,7 +147,7 @@ These features are what Marshmallow was built to provide. It is a great library,
 
 But it was created before there existed Python type hints. So, to define every <abbr title="the definition of how data should be formed">schema</abbr> you need to use specific utils and classes provided by Marshmallow.
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Use code to define "schemas" that provide data types and validation, automatically.
 
@@ -169,7 +169,7 @@ Webargs was created by the same Marshmallow developers.
 
 ///
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Have automatic validation of incoming request data.
 
@@ -199,7 +199,7 @@ APISpec was created by the same Marshmallow developers.
 
 ///
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Support the open standard for APIs, OpenAPI.
 
@@ -231,7 +231,7 @@ Flask-apispec was created by the same Marshmallow developers.
 
 ///
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Generate the OpenAPI schema automatically, from the same code that defines serialization and validation.
 
@@ -251,7 +251,7 @@ But as TypeScript data is not preserved after compilation to JavaScript, it cann
 
 It can't handle nested models very well. So, if the JSON body in the request is a JSON object that has inner fields that in turn are nested JSON objects, it cannot be properly documented and validated.
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Use Python types to have great editor support.
 
@@ -263,7 +263,7 @@ Have a powerful dependency injection system. Find a way to minimize code repetit
 
 It was one of the first extremely fast Python frameworks based on `asyncio`. It was made to be very similar to Flask.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 It used <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> instead of the default Python `asyncio` loop. That's what made it so fast.
 
@@ -271,7 +271,7 @@ It clearly inspired Uvicorn and Starlette, that are currently faster than Sanic
 
 ///
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Find a way to have a crazy performance.
 
@@ -287,7 +287,7 @@ It is designed to have functions that receive two parameters, one "request" and
 
 So, data validation, serialization, and documentation, have to be done in code, not automatically. Or they have to be implemented as a framework on top of Falcon, like Hug. This same distinction happens in other frameworks that are inspired by Falcon's design, of having one request object and one response object as parameters.
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Find ways to get great performance.
 
@@ -313,7 +313,7 @@ The dependency injection system requires pre-registration of the dependencies an
 
 Routes are declared in a single place, using functions declared in other places (instead of using decorators that can be placed right on top of the function that handles the endpoint). This is closer to how Django does it than to how Flask (and Starlette) does it. It separates in the code things that are relatively tightly coupled.
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Define extra validations for data types using the "default" value of model attributes. This improves editor support, and it was not available in Pydantic before.
 
@@ -341,7 +341,7 @@ Hug was created by Timothy Crosley, the same creator of <a href="https://github.
 
 ///
 
-/// check | "Ideas inspiring **FastAPI**"
+/// check | Ideas inspiring **FastAPI**
 
 Hug inspired parts of APIStar, and was one of the tools I found most promising, alongside APIStar.
 
@@ -385,7 +385,7 @@ APIStar was created by Tom Christie. The same guy that created:
 
 ///
 
-/// check | "Inspired **FastAPI** to"
+/// check | Inspired **FastAPI** to
 
 Exist.
 
@@ -409,7 +409,7 @@ That makes it extremely intuitive.
 
 It is comparable to Marshmallow. Although it's faster than Marshmallow in benchmarks. And as it is based on the same Python type hints, the editor support is great.
 
-/// check | "**FastAPI** uses it to"
+/// check | **FastAPI** uses it to
 
 Handle all the data validation, data serialization and automatic model documentation (based on JSON Schema).
 
@@ -444,7 +444,7 @@ But it doesn't provide automatic data validation, serialization or documentation
 
 That's one of the main things that **FastAPI** adds on top, all based on Python type hints (using Pydantic). That, plus the dependency injection system, security utilities, OpenAPI schema generation, etc.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 ASGI is a new "standard" being developed by Django core team members. It is still not a "Python standard" (a PEP), although they are in the process of doing that.
 
@@ -452,7 +452,7 @@ Nevertheless, it is already being used as a "standard" by several tools. This gr
 
 ///
 
-/// check | "**FastAPI** uses it to"
+/// check | **FastAPI** uses it to
 
 Handle all the core web parts. Adding features on top.
 
@@ -470,7 +470,7 @@ It is not a web framework, but a server. For example, it doesn't provide tools f
 
 It is the recommended server for Starlette and **FastAPI**.
 
-/// check | "**FastAPI** recommends it as"
+/// check | **FastAPI** recommends it as
 
 The main web server to run **FastAPI** applications.
 
index 0dc07b89b802d27122bb7319019cf43a624f6849..3a25b4ed5a5d8ae15b5576f7f5106586140b9ecd 100644 (file)
@@ -34,7 +34,7 @@ And if you update that local FastAPI source code when you run that Python file a
 
 That way, you don't have to "install" your local version to be able to test every change.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 This only happens when you install using this included `requirements.txt` instead of running `pip install fastapi` directly.
 
index 25ec0a3350c5be43e2fb98048ca623229014e583..9b4160d758c9d77754116fb5bc283803a7ca589c 100644 (file)
@@ -56,7 +56,7 @@ Here we use it to create a `GzipRequest` from the original request.
 
 {* ../../docs_src/custom_request_and_route/tutorial001.py hl[18:26] *}
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 A `Request` has a `request.scope` attribute, that's just a Python `dict` containing the metadata related to the request.
 
index 7e7aa3bafc677c625105d0e6d6c0fd6007dbb833..05cd5d27d0bec3a3108f4d74c922268f79983a5f 100644 (file)
@@ -171,7 +171,7 @@ Esto es un consejo.
 Those don't have to be translated, but if they are, they need to be written as:
 
 ```
-/// tip | "consejo"
+/// tip | consejo
 
 Esto es un consejo.
 
@@ -181,7 +181,7 @@ Esto es un consejo.
 
 Which looks like:
 
-/// tip | "consejo"
+/// tip | consejo
 
 Esto es un consejo.
 
index 4ec9b15bdb50c403714c3c1ce729dad24e48b4b3..605ced0d3c9fcca0dbd2703b7f28a4e2dd4bd073 100644 (file)
@@ -440,7 +440,7 @@ With `app.include_router()` we can add each `APIRouter` to the main `FastAPI` ap
 
 It will include all the routes from that router as part of it.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 It will actually internally create a *path operation* for each *path operation* that was declared in the `APIRouter`.
 
@@ -503,7 +503,7 @@ Here we do it... just to show that we can 🤷:
 
 and it will work correctly, together with all the other *path operations* added with `app.include_router()`.
 
-/// info | "Very Technical Details"
+/// info | Very Technical Details
 
 **Note**: this is a very technical detail that you probably can **just skip**.
 
index 7f7e34fcc17e28a6be2beef5a0ef18f4c248c6ce..3ce30cbf6119c95b39dfdd8041416a9fe1228b6e 100644 (file)
@@ -23,7 +23,7 @@ You can then use `Field` with model attributes:
 
 `Field` works the same way as `Query`, `Path` and `Body`, it has all the same parameters, etc.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 Actually, `Query`, `Path` and others you'll see next create objects of subclasses of a common `Param` class, which is itself a subclass of Pydantic's `FieldInfo` class.
 
index aeeefe3f5ccb35ddf8214244876549ee48751122..5341406d51cf186091b02edaf83ff152f971cb36 100644 (file)
@@ -16,7 +16,7 @@ You can define the default value as well as all the extra validation or annotati
 
 {* ../../docs_src/cookie_params/tutorial001_an_py310.py hl[9] *}
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 `Cookie` is a "sister" class of `Path` and `Query`. It also inherits from the same common `Param` class.
 
index a5d9b763ae627ab16941df81eebc120b68879ad3..cf31cfcf5d5a215544c13c735e501112f07a5976 100644 (file)
@@ -77,7 +77,7 @@ Any request with an `Origin` header. In this case the middleware will pass the r
 
 For more info about <abbr title="Cross-Origin Resource Sharing">CORS</abbr>, check the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS documentation</a>.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.middleware.cors import CORSMiddleware`.
 
index 97da668aa0a767bb7452c8db7c7f2bd2a19aa84c..430b7a73f14a3067d71eec8cc340e486531ebb48 100644 (file)
@@ -10,7 +10,7 @@ Make sure to use `yield` one single time per dependency.
 
 ///
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 Any function that is valid to use with:
 
@@ -149,7 +149,7 @@ You can have any combinations of dependencies that you want.
 
 **FastAPI** will make sure everything is run in the correct order.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 This works thanks to Python's <a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">Context Managers</a>.
 
index 1c20b945ace39cd598e150c7a2a49343bfe472ee..783295933b0e8654a93d743d5ff305c102b8a5a5 100644 (file)
@@ -159,7 +159,7 @@ You could also use it to generate code automatically, for clients that communica
 
 `FastAPI` is a Python class that provides all the functionality for your API.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 `FastAPI` is a class that inherits directly from `Starlette`.
 
@@ -245,7 +245,7 @@ The `@app.get("/")` tells **FastAPI** that the function right below is in charge
 * the path `/`
 * using a <abbr title="an HTTP GET method"><code>get</code> operation</abbr>
 
-/// info | "`@decorator` Info"
+/// info | `@decorator` Info
 
 That `@something` syntax in Python is called a "decorator".
 
index 38c15761b8c91e46abf2a8b419d9449213099de1..537cb3e7257675a8187e4622e4706947f6bdecb3 100644 (file)
@@ -109,7 +109,7 @@ So, you will receive a clean error, with an HTTP status code of `418` and a JSON
 {"message": "Oops! yolo did something. There goes a rainbow..."}
 ```
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.requests import Request` and `from starlette.responses import JSONResponse`.
 
@@ -192,7 +192,7 @@ For example, you could want to return a plain text response instead of JSON for
 {!../../docs_src/handling_errors/tutorial004.py!}
 ```
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.responses import PlainTextResponse`.
 
index e34f301a9beed9d5cd95686ee69f178dd5097fbd..49ad7aa25b24ef884d3f959d8d1672c015a5bba0 100644 (file)
@@ -16,7 +16,7 @@ You can define the default value as well as all the extra validation or annotati
 
 {* ../../docs_src/header_params/tutorial001_an_py310.py hl[9] *}
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 `Header` is a "sister" class of `Path`, `Query` and `Cookie`. It also inherits from the same common `Param` class.
 
index 16d853018d16529373468c1b24f810d231210d5f..4693d977a9b1c2d9951b258b0edd7789cb998987 100644 (file)
@@ -11,7 +11,7 @@ A "middleware" is a function that works with every **request** before it is proc
 * It can do something to that **response** or run any needed code.
 * Then it returns the **response**.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 If you have dependencies with `yield`, the exit code will run *after* the middleware.
 
@@ -41,7 +41,7 @@ But if you have custom headers that you want a client in a browser to be able to
 
 ///
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.requests import Request`.
 
index c78d20ea6310cdbcd5e8578ab0fcccd6c44ec743..f2b5fd7957bc1908f3caea7c4ac7726bd66dd61f 100644 (file)
@@ -20,7 +20,7 @@ But if you don't remember what each number code is for, you can use the shortcut
 
 That status code will be used in the response and will be added to the OpenAPI schema.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette import status`.
 
index dc13a513c19260ac627fcc28614f7981c23af54f..9440bcc03b00a48a4fe4126d8d88d9f1c71727cc 100644 (file)
@@ -149,7 +149,7 @@ All of them share the same parameters for additional validation and metadata you
 
 ///
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 When you import `Query`, `Path` and others from `fastapi`, they are actually functions.
 
index 2b433555ba12bd1e5e969a11b00da103b10999eb..0d57f35660df998ecdcf35c6ff4872939b41fb24 100644 (file)
@@ -97,13 +97,13 @@ If you are inside of a normal `def` *path operation function*, you can access th
 contents = myfile.file.read()
 ```
 
-/// note | "`async` Technical Details"
+/// note | `async` Technical Details
 
 When you use the `async` methods, **FastAPI** runs the file methods in a threadpool and awaits for them.
 
 ///
 
-/// note | "Starlette Technical Details"
+/// note | Starlette Technical Details
 
 **FastAPI**'s `UploadFile` inherits directly from **Starlette**'s `UploadFile`, but adds some necessary parts to make it compatible with **Pydantic** and the other parts of FastAPI.
 
@@ -115,7 +115,7 @@ The way HTML forms (`<form></form>`) sends the data to the server normally uses
 
 **FastAPI** will make sure to read that data from the right place instead of JSON.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 Data from forms is normally encoded using the "media type" `application/x-www-form-urlencoded` when it doesn't include files.
 
@@ -157,7 +157,7 @@ To use that, declare a list of `bytes` or `UploadFile`:
 
 You will receive, as declared, a `list` of `bytes` or `UploadFile`s.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.responses import HTMLResponse`.
 
index 2ccc6886e72df1c30296fb5edbe87facaaa5d17e..c65e9874ca6de3423cabdb1b1c5f703c1c81544e 100644 (file)
@@ -106,7 +106,7 @@ The way HTML forms (`<form></form>`) sends the data to the server normally uses
 
 **FastAPI** will make sure to read that data from the right place instead of JSON.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 Data from forms is normally encoded using the "media type" `application/x-www-form-urlencoded`.
 
index a32faa40b20dea217f3b473383bdbb427963e620..711042a4667dacf9c81a554c4500f8aefe3b8cdc 100644 (file)
@@ -88,7 +88,7 @@ They are just a convenience, they hold the same number, but that way you can use
 
 <img src="/img/tutorial/response-status-code/image02.png">
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette import status`.
 
index ead2aa799224fd0817d8e9394d97d3bd80992895..37e37cb5b52e86a56e2633e77a4339bd99cc8726 100644 (file)
@@ -88,7 +88,7 @@ You will see something like this:
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | "Authorize button!"
+/// check | Authorize button!
 
 You already have a shiny new "Authorize" button.
 
@@ -260,7 +260,7 @@ This dependency will provide a `str` that is assigned to the parameter `token` o
 
 **FastAPI** will know that it can use this dependency to define a "security scheme" in the OpenAPI schema (and the automatic API docs).
 
-/// info | "Technical Details"
+/// info | Technical Details
 
 **FastAPI** will know that it can use the class `OAuth2PasswordBearer` (declared in a dependency) to define the security scheme in OpenAPI because it inherits from `fastapi.security.oauth2.OAuth2`, which in turn inherits from `fastapi.security.base.SecurityBase`.
 
index 46affd4f2f97a3e405fc053b504500e80ba448f3..1d277a51cb312866fdee8658b0e5633ef73846e3 100644 (file)
@@ -9,7 +9,7 @@ You can serve static files automatically from a directory using `StaticFiles`.
 
 {* ../../docs_src/static_files/tutorial001.py hl[2,6] *}
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.staticfiles import StaticFiles`.
 
index 7f609a59589647c453c1dd95bb03c91528fff39d..a204f596f19960992318fedeca90502a33aa8f71 100644 (file)
@@ -44,7 +44,7 @@ This allows you to use `pytest` directly without complications.
 
 ///
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 You could also use `from starlette.testclient import TestClient`.
 
index f6813f0ff5fb702ab5ca980d2a72bc4b3d8e5b34..12399d581341a9ba6b916e3fe19a203605ca4906 100644 (file)
@@ -2,7 +2,7 @@
 
 ## OpenAPI operationId
 
-/// warning | "Advertencia"
+/// warning | Advertencia
 
 Si no eres una persona "experta" en OpenAPI, probablemente no necesitas leer esto.
 
index db3fc092ede64e01bcebe578c863478f0ff6dba8..9a3b1a00bef5152cd0bf19fc85246672e2badf36 100644 (file)
@@ -16,7 +16,7 @@ El primer valor es el valor por defecto, puedes pasar todos los parámetros adic
 
 {* ../../docs_src/cookie_params/tutorial001_an_py310.py hl[9]*}
 
-/// note | "Detalles Técnicos"
+/// note | Detalles Técnicos
 
 `Cookie` es una clase "hermana" de `Path` y `Query`. También hereda de la misma clase común `Param`.
 
index 46c57c4c3a0002ab556064f31e95c250bf63e56f..fa13450f07fee17c910fbdd6acff6445832e12f0 100644 (file)
@@ -50,7 +50,7 @@ $ pip install "fastapi[all]"
 
 ...eso también incluye `uvicorn` que puedes usar como el servidor que ejecuta tu código.
 
-/// note | "Nota"
+/// note | Nota
 
 También puedes instalarlo parte por parte.
 
index ca631d5073fceb0f64b0316cf56fe273ca9e8c15..a3ab483fb1760c2ff2acc1a021485bc54b0d5f7c 100644 (file)
@@ -11,7 +11,7 @@
 * می تواند کاری با **پاسخ** انجام دهید یا هر کد مورد نیازتان را اجرا کند.
 * سپس **پاسخ** را برمی گرداند.
 
-/// توجه | "جزئیات فنی"
+/// توجه | جزئیات فنی
 
 در صورت وجود وابستگی هایی با `yield`، کد خروجی **پس از** اجرای میان‌‌افزار اجرا خواهد شد.
 
@@ -40,7 +40,7 @@
 
 ///
 
-/// توجه | "جزئیات فنی"
+/// توجه | جزئیات فنی
 
 شما همچنین می‌توانید از `from starlette.requests import Request` استفاده کنید.
 
index 12f944b1224e34f886c78894d2b7c29ed18c2509..38527aad3c09ed6d25e5024023f092861d1cfdd1 100644 (file)
@@ -1,6 +1,6 @@
 # Réponses supplémentaires dans OpenAPI
 
-/// warning | "Attention"
+/// warning | Attention
 
 Ceci concerne un sujet plutôt avancé.
 
@@ -28,7 +28,7 @@ Par exemple, pour déclarer une autre réponse avec un code HTTP `404` et un mod
 
 {* ../../docs_src/additional_responses/tutorial001.py hl[18,22] *}
 
-/// note | "Remarque"
+/// note | Remarque
 
 Gardez à l'esprit que vous devez renvoyer directement `JSONResponse`.
 
@@ -177,7 +177,7 @@ Par exemple, vous pouvez ajouter un type de média supplémentaire `image/png`,
 
 {* ../../docs_src/additional_responses/tutorial002.py hl[19:24,28] *}
 
-/// note | "Remarque"
+/// note | Remarque
 
 Notez que vous devez retourner l'image en utilisant directement un `FileResponse`.
 
index 06a8043ea47ef8d9cf00b278b9550f6213d7d0e7..c406ae8cb1a61762d5b9f3e765968cba56c59b97 100644 (file)
@@ -18,7 +18,7 @@ Pour y parvenir, importez `JSONResponse` et renvoyez-y directement votre contenu
 {!../../docs_src/additional_status_codes/tutorial001.py!}
 ```
 
-/// warning | "Attention"
+/// warning | Attention
 
 Lorsque vous renvoyez une `Response` directement, comme dans l'exemple ci-dessus, elle sera renvoyée directement.
 
@@ -28,7 +28,7 @@ Assurez-vous qu'il contient les données souhaitées et que les valeurs soient d
 
 ///
 
-/// note | "Détails techniques"
+/// note | Détails techniques
 
 Vous pouvez également utiliser `from starlette.responses import JSONResponse`.
 
index 198fa8c307180c749cb7ac7f3bdb1ee3a12b2bfa..d9d8ad8e60ffa8e7c0996ae157eec0dcdab3b773 100644 (file)
@@ -6,7 +6,7 @@ Le [Tutoriel - Guide de l'utilisateur](../tutorial/index.md){.internal-link targ
 
 Dans les sections suivantes, vous verrez des options, configurations et fonctionnalités supplémentaires.
 
-/// note | "Remarque"
+/// note | Remarque
 
 Les sections de ce chapitre ne sont **pas nécessairement "avancées"**.
 
index b00f46727ab164a80c43baeb208d5d950ca1f7e1..7daf0fc65f6e90c9ab7c84f834f69109b2458bcf 100644 (file)
@@ -2,7 +2,7 @@
 
 ## ID d'opération OpenAPI
 
-/// warning | "Attention"
+/// warning | Attention
 
 Si vous n'êtes pas un "expert" en OpenAPI, vous n'en avez probablement pas besoin.
 
@@ -22,13 +22,13 @@ Vous devriez le faire après avoir ajouté toutes vos *paramètres de chemin*.
 
 {* ../../docs_src/path_operation_advanced_configuration/tutorial002.py hl[2,12:21,24] *}
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Si vous appelez manuellement `app.openapi()`, vous devez mettre à jour les `operationId` avant.
 
 ///
 
-/// warning | "Attention"
+/// warning | Attention
 
 Pour faire cela, vous devez vous assurer que chacun de vos *chemin* ait un nom unique.
 
@@ -66,7 +66,7 @@ Il y a un chapitre entier ici dans la documentation à ce sujet, vous pouvez le
 
 Lorsque vous déclarez un *chemin* dans votre application, **FastAPI** génère automatiquement les métadonnées concernant ce *chemin* à inclure dans le schéma OpenAPI.
 
-/// note | "Détails techniques"
+/// note | Détails techniques
 
 La spécification OpenAPI appelle ces métadonnées des <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object" class="external-link" target="_blank">Objets d'opération</a>.
 
@@ -78,7 +78,7 @@ Il inclut les `tags`, `parameters`, `requestBody`, `responses`, etc.
 
 Ce schéma OpenAPI spécifique aux *operations* est normalement généré automatiquement par **FastAPI**, mais vous pouvez également l'étendre.
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Si vous avez seulement besoin de déclarer des réponses supplémentaires, un moyen plus pratique de le faire est d'utiliser les [réponses supplémentaires dans OpenAPI](additional-responses.md){.internal-link target=_blank}.
 
@@ -161,7 +161,7 @@ Et nous analysons directement ce contenu YAML, puis nous utilisons à nouveau le
 
 {* ../../docs_src/path_operation_advanced_configuration/tutorial007.py hl[26:33] *}
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Ici, nous réutilisons le même modèle Pydantic.
 
index 338aee017cc02ea2bdf2bc4bab2cdcdd653db70f..4ff883c77070646019ebe7ab8687a3c28c987fbe 100644 (file)
@@ -14,7 +14,7 @@ Cela peut être utile, par exemple, pour retourner des en-têtes personnalisés
 
 En fait, vous pouvez retourner n'importe quelle `Response` ou n'importe quelle sous-classe de celle-ci.
 
-/// note | "Remarque"
+/// note | Remarque
 
 `JSONResponse` est elle-même une sous-classe de `Response`.
 
@@ -36,7 +36,7 @@ Pour ces cas, vous pouvez spécifier un appel à `jsonable_encoder` pour convert
 
 {* ../../docs_src/response_directly/tutorial001.py hl[6:7,21:22] *}
 
-/// note | "Détails techniques"
+/// note | Détails techniques
 
 Vous pouvez aussi utiliser `from starlette.responses import JSONResponse`.
 
index d2438dc367b5b95b4e5e8224264e73c21a0a2fca..4d6037910176302f1fc5346bdfc140e938bbda9d 100644 (file)
@@ -43,7 +43,7 @@ Django REST framework a été créé par Tom Christie. Le créateur de Starlette
 
 ///
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Avoir une interface de documentation automatique de l'API.
 
@@ -65,7 +65,7 @@ qui est nécessaire, était une caractéristique clé que je voulais conserver.
 
 Compte tenu de la simplicité de Flask, il semblait bien adapté à la création d'API. La prochaine chose à trouver était un "Django REST Framework" pour Flask.
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Être un micro-framework. Il est donc facile de combiner les outils et les pièces nécessaires.
 
@@ -107,7 +107,7 @@ def read_url():
 
 Notez les similitudes entre `requests.get(...)` et `@app.get(...)`.
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Avoir une API simple et intuitive.
 
@@ -128,7 +128,7 @@ Swagger pour une API permettrait d'utiliser cette interface utilisateur web auto
 
 C'est pourquoi, lorsqu'on parle de la version 2.0, il est courant de dire "Swagger", et pour la version 3+ "OpenAPI".
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Adopter et utiliser une norme ouverte pour les spécifications des API, au lieu d'un schéma personnalisé.
 
@@ -166,7 +166,7 @@ Ces fonctionnalités sont ce pourquoi Marshmallow a été construit. C'est une e
 Mais elle a été créée avant que les type hints n'existent en Python. Ainsi, pour définir chaque <abbr title="la définition de
 la façon dont les données doivent être formées">schéma</abbr>, vous devez utiliser des utilitaires et des classes spécifiques fournies par Marshmallow.
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Utilisez du code pour définir des "schémas" qui fournissent automatiquement les types de données et la validation.
 
@@ -189,7 +189,7 @@ Webargs a été créé par les développeurs de Marshmallow.
 
 ///
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Disposer d'une validation automatique des données des requêtes entrantes.
 
@@ -219,7 +219,7 @@ APISpec a été créé par les développeurs de Marshmallow.
 
 ///
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Supporter la norme ouverte pour les API, OpenAPI.
 
@@ -252,7 +252,7 @@ Flask-apispec a été créé par les développeurs de Marshmallow.
 
 ///
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Générer le schéma OpenAPI automatiquement, à partir du même code qui définit la sérialisation et la validation.
 
@@ -273,7 +273,7 @@ Mais comme les données TypeScript ne sont pas préservées après la compilatio
 
 Il ne peut pas très bien gérer les modèles imbriqués. Ainsi, si le corps JSON de la requête est un objet JSON comportant des champs internes qui sont à leur tour des objets JSON imbriqués, il ne peut pas être correctement documenté et validé.
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Utiliser les types Python pour bénéficier d'un excellent support de l'éditeur.
 
@@ -285,7 +285,7 @@ Disposer d'un puissant système d'injection de dépendances. Trouver un moyen de
 
 C'était l'un des premiers frameworks Python extrêmement rapides basés sur `asyncio`. Il a été conçu pour être très similaire à Flask.
 
-/// note | "Détails techniques"
+/// note | Détails techniques
 
 Il utilisait <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> au lieu du système par défaut de Python `asyncio`. C'est ce qui l'a rendu si rapide.
 
@@ -293,7 +293,7 @@ Il a clairement inspiré Uvicorn et Starlette, qui sont actuellement plus rapide
 
 ///
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Trouvez un moyen d'avoir une performance folle.
 
@@ -313,7 +313,7 @@ pas possible de déclarer des paramètres de requête et des corps avec des indi
 
 Ainsi, la validation, la sérialisation et la documentation des données doivent être effectuées dans le code, et non pas automatiquement. Ou bien elles doivent être implémentées comme un framework au-dessus de Falcon, comme Hug. Cette même distinction se retrouve dans d'autres frameworks qui s'inspirent de la conception de Falcon, qui consiste à avoir un objet de requête et un objet de réponse comme paramètres.
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Trouver des moyens d'obtenir de bonnes performances.
 
@@ -343,7 +343,7 @@ d'utiliser des décorateurs qui peuvent être placés juste au-dessus de la fonc
 méthode est plus proche de celle de Django que de celle de Flask (et Starlette). Il sépare dans le code des choses
 qui sont relativement fortement couplées.
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Définir des validations supplémentaires pour les types de données utilisant la valeur "par défaut" des attributs du modèle. Ceci améliore le support de l'éditeur, et n'était pas disponible dans Pydantic auparavant.
 
@@ -372,7 +372,7 @@ Hug a été créé par Timothy Crosley, le créateur de <a href="https://github.
 
 ///
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Hug a inspiré certaines parties d'APIStar, et était l'un des outils que je trouvais les plus prometteurs, à côté d'APIStar.
 
@@ -419,7 +419,7 @@ APIStar a été créé par Tom Christie. Le même gars qui a créé :
 
 ///
 
-/// check | "A inspiré **FastAPI** à"
+/// check | A inspiré **FastAPI** à
 
 Exister.
 
@@ -444,7 +444,7 @@ Cela le rend extrêmement intuitif.
 Il est comparable à Marshmallow. Bien qu'il soit plus rapide que Marshmallow dans les benchmarks. Et comme il est
 basé sur les mêmes type hints Python, le support de l'éditeur est grand.
 
-/// check | "**FastAPI** l'utilise pour"
+/// check | **FastAPI** l'utilise pour
 
 Gérer toute la validation des données, leur sérialisation et la documentation automatique du modèle (basée sur le schéma JSON).
 
@@ -480,7 +480,7 @@ Mais il ne fournit pas de validation automatique des données, de sérialisation
 
 C'est l'une des principales choses que **FastAPI** ajoute par-dessus, le tout basé sur les type hints Python (en utilisant Pydantic). Cela, plus le système d'injection de dépendances, les utilitaires de sécurité, la génération de schémas OpenAPI, etc.
 
-/// note | "Détails techniques"
+/// note | Détails techniques
 
 ASGI est une nouvelle "norme" développée par les membres de l'équipe principale de Django. Il ne s'agit pas encore d'une "norme Python" (un PEP), bien qu'ils soient en train de le faire.
 
@@ -488,7 +488,7 @@ Néanmoins, il est déjà utilisé comme "standard" par plusieurs outils. Cela a
 
 ///
 
-/// check | "**FastAPI** l'utilise pour"
+/// check | **FastAPI** l'utilise pour
 
 Gérer toutes les parties web de base. Ajouter des fonctionnalités par-dessus.
 
@@ -507,7 +507,7 @@ quelque chose qu'un framework comme Starlette (ou **FastAPI**) fournirait par-de
 
 C'est le serveur recommandé pour Starlette et **FastAPI**.
 
-/// check | "**FastAPI** le recommande comme"
+/// check | **FastAPI** le recommande comme
 
 Le serveur web principal pour exécuter les applications **FastAPI**.
 
index 0f8f34e6543113d14f8d0b64c308633b31d9d537..0ff5fa5d1cfc804ee7249cd397be48217792cb05 100644 (file)
@@ -393,7 +393,7 @@ Tout ceci est donc ce qui donne sa force à **FastAPI** (à travers Starlette) e
 
 ## Détails très techniques
 
-/// warning | "Attention !"
+/// warning | Attention !
 
 Vous pouvez probablement ignorer cela.
 
index 0f3b647001ea39552cf5d2d0500c13fdbbd41423..05b597a2df3fa68e9b10a792d7a6d0f29c570a03 100644 (file)
@@ -17,7 +17,7 @@ Cette image est dotée d'un mécanisme d'"auto-tuning", de sorte qu'il vous suff
 
 Mais vous pouvez toujours changer et mettre à jour toutes les configurations avec des variables d'environnement ou des fichiers de configuration.
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Pour voir toutes les configurations et options, rendez-vous sur la page de l'image Docker : <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker" class="external-link" target="_blank">tiangolo/uvicorn-gunicorn-fastapi</a>.
 
index 6a737fdef05bea83b20d9a6b3f8d0c645833853c..7c29242a9f25da7d3b2f4b07d9281929c9760578 100644 (file)
@@ -39,7 +39,7 @@ $ pip install "uvicorn[standard]"
 
 </div>
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 En ajoutant `standard`, Uvicorn va installer et utiliser quelques dépendances supplémentaires recommandées.
 
index 8ea79a172618443d372cb140571daf0b5b5bd65e..9d84274e27345000e9bf777a69b58bbf05d37d5e 100644 (file)
@@ -48,7 +48,7 @@ des changements non rétrocompatibles.
 FastAPI suit également la convention que tout changement de version "PATCH" est pour des corrections de bogues et
 des changements rétrocompatibles.
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Le "PATCH" est le dernier chiffre, par exemple, dans `0.2.3`, la version PATCH est `3`.
 
@@ -62,7 +62,7 @@ fastapi>=0.45.0,<0.46.0
 
 Les changements non rétrocompatibles et les nouvelles fonctionnalités sont ajoutés dans les versions "MINOR".
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Le "MINOR" est le numéro au milieu, par exemple, dans `0.2.3`, la version MINOR est `2`.
 
index 8a0f1f3f474d957e7cefed61664f3d3251f0653c..99ca9082772111e60c78ba940059dc5d74d3e30d 100644 (file)
@@ -161,7 +161,7 @@ Les listes étant un type contenant des types internes, mettez ces derniers entr
 
 {*../../docs_src/python_types/tutorial006.py hl[4] *}
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Ces types internes entre crochets sont appelés des "paramètres de type".
 
index c4d493a458222aa9a565659fd3e7a9d41ad936b9..760b6d80ae3d9e6e29d089b21e07a62bc19db5d0 100644 (file)
@@ -107,7 +107,7 @@ Mais vous auriez le même support de l'éditeur avec <a href="https://www.jetbra
 
 <img src="/img/tutorial/body/image05.png">
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Si vous utilisez <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> comme éditeur, vous pouvez utiliser le Plugin <a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic PyCharm Plugin</a>.
 
index b2fb5181cae675ce6910165b8f367997308eeb42..7581453620d7cf43766792e16a35f2414145275b 100644 (file)
@@ -136,7 +136,7 @@ Vous pourriez aussi l'utiliser pour générer du code automatiquement, pour les
 
 `FastAPI` est une classe Python qui fournit toutes les fonctionnalités nécessaires au lancement de votre API.
 
-/// note | "Détails techniques"
+/// note | Détails techniques
 
 `FastAPI` est une classe héritant directement de `Starlette`.
 
@@ -249,7 +249,7 @@ Le `@app.get("/")` dit à **FastAPI** que la fonction en dessous est chargée de
 * le chemin `/`
 * en utilisant une <abbr title="une méthode GET HTTP">opération <code>get</code></abbr>
 
-/// info | "`@décorateur` Info"
+/// info | `@décorateur` Info
 
 Cette syntaxe `@something` en Python est appelée un "décorateur".
 
@@ -276,7 +276,7 @@ Tout comme celles les plus exotiques :
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Vous êtes libres d'utiliser chaque opération (méthode HTTP) comme vous le désirez.
 
index b3635fb86319be8c6f8082b788f006b863dde6e2..3f3280e640c3f94016b8188351ebf67c899e11c1 100644 (file)
@@ -148,7 +148,7 @@ Tous partagent les mêmes paramètres pour des validations supplémentaires et d
 
 ///
 
-/// note | "Détails techniques"
+/// note | Détails techniques
 
 Lorsque vous importez `Query`, `Path` et d'autres de `fastapi`, ce sont en fait des fonctions.
 
index 508529fae27bd1dffc80aa3ef46e218c0e98dbaa..71c96b18eefdd957a94330ff24ff26853dd02656 100644 (file)
@@ -24,7 +24,7 @@ Vous pouvez déclarer le type d'un paramètre de chemin dans la fonction, en uti
 
 Ici, `item_id` est déclaré comme `int`.
 
-/// check | "vérifier"
+/// check | vérifier
 
 Ceci vous permettra d'obtenir des fonctionnalités de l'éditeur dans votre fonction, telles
 que des vérifications d'erreur, de l'auto-complétion, etc.
@@ -39,7 +39,7 @@ Si vous exécutez cet exemple et allez sur <a href="http://127.0.0.1:8000/items/
 {"item_id":3}
 ```
 
-/// check | "vérifier"
+/// check | vérifier
 
 Comme vous l'avez remarqué, la valeur reçue par la fonction (et renvoyée ensuite) est `3`,
 en tant qu'entier (`int`) Python, pas la chaîne de caractères (`string`) `"3"`.
@@ -74,7 +74,7 @@ La même erreur se produira si vous passez un nombre flottant (`float`) et non u
 <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a>.
 
 
-/// check | "vérifier"
+/// check | vérifier
 
 Donc, avec ces mêmes déclarations de type Python, **FastAPI** vous fournit de la validation de données.
 
@@ -151,7 +151,7 @@ Créez ensuite des attributs de classe avec des valeurs fixes, qui seront les va
 
 ///
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Pour ceux qui se demandent, "AlexNet", "ResNet", et "LeNet" sont juste des noms de <abbr title="Techniquement, des architectures de modèles">modèles</abbr> de Machine Learning.
 
@@ -185,7 +185,7 @@ Vous pouvez obtenir la valeur réel d'un membre (une chaîne de caractères ici)
 
 {* ../../docs_src/path_params/tutorial005.py hl[20] *}
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Vous pouvez aussi accéder la valeur `"lenet"` avec `ModelName.lenet.value`.
 
@@ -238,7 +238,7 @@ Vous pouvez donc l'utilisez comme tel :
 
 {* ../../docs_src/path_params/tutorial004.py hl[6] *}
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Vous pourriez avoir besoin que le paramètre contienne `/home/johndoe/myfile.txt`, avec un slash au début (`/`).
 
index a3cf763024d8ca45b34f4a15a9d1a63eb50947f2..c54c0c717165d195f68651538f9ccf13f16ecae1 100644 (file)
@@ -106,7 +106,7 @@ Disons que vous déclarez le paramètre `q` comme ayant une longueur minimale de
 
 {* ../../docs_src/query_params_str_validations/tutorial005.py hl[7] *}
 
-/// note | "Rappel"
+/// note | Rappel
 
 Avoir une valeur par défaut rend le paramètre optionnel.
 
@@ -171,7 +171,7 @@ Donc la réponse de cette URL serait :
 }
 ```
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Pour déclarer un paramètre de requête de type `list`, comme dans l'exemple ci-dessus, il faut explicitement utiliser `Query`, sinon cela sera interprété comme faisant partie du corps de la requête.
 
index 798f84fa3e0f66a7ec10f6012c7ecd7218296211..b87c26c782c3eab64769ab66b18234988f599abb 100644 (file)
@@ -65,7 +65,7 @@ De la même façon, vous pouvez définir des paramètres de requête comme optio
 
 Ici, le paramètre `q` sera optionnel, et aura `None` comme valeur par défaut.
 
-/// check | "Remarque"
+/// check | Remarque
 
 On peut voir que **FastAPI** est capable de détecter que le paramètre de chemin `item_id` est un paramètre de chemin et que `q` n'en est pas un, c'est donc un paramètre de requête.
 
@@ -187,7 +187,7 @@ Ici, on a donc 3 paramètres de requête :
 * `skip`, un `int` avec comme valeur par défaut `0`.
 * `limit`, un `int` optionnel.
 
-/// tip | "Astuce"
+/// tip | Astuce
 
 Vous pouvez utiliser les `Enum`s de la même façon qu'avec les [Paramètres de chemin](path-params.md#valeurs-predefinies){.internal-link target=_blank}.
 
index f0dee3d73047862656c8df96c340bd9287e76b11..c01ec9a8965a80e7caa023cba2022a0efa7a3222 100644 (file)
@@ -52,7 +52,7 @@ $ pip install "fastapi[all]"
 
 ...yang juga termasuk `uvicorn`, yang dapat kamu gunakan sebagai server yang menjalankan kodemu.
 
-/// note | "Catatan"
+/// note | Catatan
 
 Kamu juga dapat meng-installnya bagian demi bagian.
 
index 904d539e77e550e61ec3f9d9870c926181c2b032..fb3164328b9c7f77a756bf290869e6b38d502651 100644 (file)
@@ -18,7 +18,7 @@
 {!../../docs_src/additional_status_codes/tutorial001.py!}
 ```
 
-/// warning | "注意"
+/// warning | 注意
 
 上記の例のように `Response` を明示的に返す場合、それは直接返されます。
 
@@ -28,7 +28,7 @@
 
 ///
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `from starlette.responses import JSONResponse` を利用することもできます。
 
index 88269700e00ee43274f8f493a9a6c63f873137de..15edc11addcb5c3bfbab948c3390ada8375d3841 100644 (file)
@@ -12,7 +12,7 @@
 
 そしてもし、`Response` が、`JSONResponse` や `UJSONResponse` の場合のようにJSONメディアタイプ (`application/json`) ならば、データは *path operationデコレータ* に宣言したPydantic `response_model` により自動的に変換 (もしくはフィルタ) されます。
 
-/// note | "備考"
+/// note | 備考
 
 メディアタイプを指定せずにレスポンスクラスを利用すると、FastAPIは何もコンテンツがないことを期待します。そのため、生成されるOpenAPIドキュメントにレスポンスフォーマットが記載されません。
 
@@ -28,7 +28,7 @@
 {!../../docs_src/custom_response/tutorial001b.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 パラメータ `response_class` は、レスポンスの「メディアタイプ」を定義するために利用することもできます。
 
@@ -38,7 +38,7 @@
 
 ///
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `ORJSONResponse` は、現在はFastAPIのみで利用可能で、Starletteでは利用できません。
 
@@ -55,7 +55,7 @@
 {!../../docs_src/custom_response/tutorial002.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 パラメータ `response_class` は、レスポンスの「メディアタイプ」を定義するために利用されます。
 
 {!../../docs_src/custom_response/tutorial003.py!}
 ```
 
-/// warning | "注意"
+/// warning | 注意
 
 *path operation関数* から直接返される `Response` は、OpenAPIにドキュメントされず (例えば、 `Content-Type` がドキュメントされない) 、自動的な対話的ドキュメントからも閲覧できません。
 
 ///
 
-/// info | "情報"
+/// info | 情報
 
 もちろん、実際の `Content-Type` ヘッダーやステータスコードなどは、返された `Response` オブジェクトに由来しています。
 
 
 `Response` を使って他の何かを返せますし、カスタムのサブクラスも作れることを覚えておいてください。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `from starlette.responses import HTMLResponse` も利用できます。
 
@@ -168,7 +168,7 @@ FastAPI (実際にはStarlette) は自動的にContent-Lengthヘッダーを含
 
 <a href="https://github.com/ultrajson/ultrajson" class="external-link" target="_blank">`ujson`</a>を使った、代替のJSONレスポンスです。
 
-/// warning | "注意"
+/// warning | 注意
 
 `ujson` は、いくつかのエッジケースの取り扱いについて、Pythonにビルトインされた実装よりも作りこまれていません。
 
@@ -178,7 +178,7 @@ FastAPI (実際にはStarlette) は自動的にContent-Lengthヘッダーを含
 {!../../docs_src/custom_response/tutorial001.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `ORJSONResponse` のほうが高速な代替かもしれません。
 
@@ -210,7 +210,7 @@ HTTPリダイレクトを返します。デフォルトでは307ステータス
 {!../../docs_src/custom_response/tutorial008.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 ここでは `async` や `await` をサポートしていない標準の `open()` を使っているので、通常の `def` でpath operationを宣言していることに注意してください。
 
@@ -245,7 +245,7 @@ HTTPリダイレクトを返します。デフォルトでは307ステータス
 {!../../docs_src/custom_response/tutorial010.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 前に見たように、 *path operation* の中で `response_class` をオーバーライドできます。
 
index da3c2a2bf656fc90f2057b1ce2f9ac59f5e5f066..22eaf6eb80d76f87cfd0d1aa74628fde809beb89 100644 (file)
@@ -6,7 +6,7 @@
 
 以降のセクションでは、チュートリアルでは説明しきれなかったオプションや設定、および機能について説明します。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 以降のセクションは、 **必ずしも"応用編"ではありません**。
 
index 2dab4aec1585e4efea1d431f254982e3e5908dba..99428bcbee36b64623c19845c416148b96cacc5a 100644 (file)
@@ -2,7 +2,7 @@
 
 ## OpenAPI operationId
 
-/// warning | "注意"
+/// warning | 注意
 
 あなたがOpenAPIの「エキスパート」でなければ、これは必要ないかもしれません。
 
@@ -26,13 +26,13 @@ APIの関数名を `operationId` として利用したい場合、すべてのAP
 {!../../docs_src/path_operation_advanced_configuration/tutorial002.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `app.openapi()` を手動でコールする場合、その前に`operationId`を更新する必要があります。
 
 ///
 
-/// warning | "注意"
+/// warning | 注意
 
 この方法をとる場合、各 *path operation関数* が一意な名前である必要があります。
 
index 167d15589f4fa5e3d3723fa58774f3da6bb0d906..dc66e238c96c49874ee5e3cd2ee3ea90ef9a5d13 100644 (file)
@@ -14,7 +14,7 @@
 
 実際は、`Response` やそのサブクラスを返すことができます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `JSONResponse` それ自体は、 `Response` のサブクラスです。
 
@@ -38,7 +38,7 @@
 {!../../docs_src/response_directly/tutorial001.py!}
 ```
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 また、`from starlette.responses import JSONResponse` も利用できます。
 
index f7bcb6af3497d278463eec33c8407732044d618e..365ceca9db83cae52f4e0a9f45314522c2071b01 100644 (file)
@@ -50,7 +50,7 @@ $ pip install websockets
 {!../../docs_src/websockets/tutorial001.py!}
 ```
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `from starlette.websockets import WebSocket` を使用しても構いません.
 
@@ -119,7 +119,7 @@ WebSocketエンドポイントでは、`fastapi` から以下をインポート
 {!../../docs_src/websockets/tutorial002.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 WebSocket で `HTTPException` を発生させることはあまり意味がありません。したがって、WebSocketの接続を直接閉じる方がよいでしょう。
 
@@ -150,7 +150,7 @@ $ uvicorn main:app --reload
 * パスで使用される「Item ID」
 * クエリパラメータとして使用される「Token」
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 クエリ `token` は依存パッケージによって処理されることに注意してください。
 
@@ -180,7 +180,7 @@ WebSocket接続が閉じられると、 `await websocket.receive_text()` は例
 Client #1596980209979 left the chat
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 上記のアプリは、複数の WebSocket 接続に対してメッセージを処理し、ブロードキャストする方法を示すための最小限のシンプルな例です。
 
index 343ae4ed87d606f49d786acd8b884d05e03565ab..8129a7002be04f21ccbf1b75910e2bbb25053a49 100644 (file)
@@ -30,13 +30,13 @@ Mozilla、Red Hat、Eventbrite など多くの企業で利用されています
 
 これは**自動的なAPIドキュメント生成**の最初の例であり、これは**FastAPI**に向けた「調査」を触発した最初のアイデアの一つでした。
 
-/// note | "備考"
+/// note | 備考
 
 Django REST Framework は Tom Christie によって作成されました。StarletteとUvicornの生みの親であり、**FastAPI**のベースとなっています。
 
 ///
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 自動でAPIドキュメントを生成するWebユーザーインターフェースを持っている点。
 
@@ -56,7 +56,7 @@ Flask は「マイクロフレームワーク」であり、データベース
 
 Flaskのシンプルさを考えると、APIを構築するのに適しているように思えました。次に見つけるべきは、Flask 用の「Django REST Framework」でした。
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 マイクロフレームワークであること。ツールやパーツを目的に合うように簡単に組み合わせられる点。
 
@@ -98,7 +98,7 @@ def read_url():
 
  `requests.get(...)` と`@app.get(...)` には類似点が見受けられます。
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 * シンプルで直感的なAPIを持っている点。
 * HTTPメソッド名を直接利用し、単純で直感的である。
@@ -118,7 +118,7 @@ def read_url():
 
 そのため、バージョン2.0では「Swagger」、バージョン3以上では「OpenAPI」と表記するのが一般的です。
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 独自のスキーマの代わりに、API仕様のオープンな標準を採用しました。
 
@@ -147,7 +147,7 @@ APIが必要とするもう一つの大きな機能はデータのバリデー
 
 しかし、それはPythonの型ヒントが存在する前に作られたものです。そのため、すべての<abbr title="データがどのように形成されるべきかの定義">スキーマ</abbr>を定義するためには、Marshmallowが提供する特定のユーティリティやクラスを使用する必要があります。
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 コードで「スキーマ」を定義し、データの型やバリデーションを自動で提供する点。
 
@@ -163,13 +163,13 @@ WebargsはFlaskをはじめとするいくつかのフレームワークの上
 
 素晴らしいツールで、私も**FastAPI**を持つ前はよく使っていました。
 
-/// info | "情報"
+/// info | 情報
 
 Webargsは、Marshmallowと同じ開発者により作られました。
 
 ///
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 受信したデータに対する自動的なバリデーションを持っている点。
 
@@ -193,13 +193,13 @@ Flask, Starlette, Responderなどにおいてはそのように動作します
 
 エディタでは、この問題を解決することはできません。また、パラメータやMarshmallowスキーマを変更したときに、YAMLのdocstringを変更するのを忘れてしまうと、生成されたスキーマが古くなってしまいます。
 
-/// info | "情報"
+/// info | 情報
 
 APISpecは、Marshmallowと同じ開発者により作成されました。
 
 ///
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 OpenAPIという、APIについてのオープンな標準をサポートしている点。
 
@@ -225,13 +225,13 @@ Flask、Flask-apispec、Marshmallow、Webargsの組み合わせは、**FastAPI**
 
 そして、これらのフルスタックジェネレーターは、[**FastAPI** Project Generators](project-generation.md){.internal-link target=_blank}の元となっていました。
 
-/// info | "情報"
+/// info | 情報
 
 Flask-apispecはMarshmallowと同じ開発者により作成されました。
 
 ///
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 シリアライゼーションとバリデーションを定義したコードから、OpenAPIスキーマを自動的に生成する点。
 
@@ -251,7 +251,7 @@ Angular 2にインスピレーションを受けた、統合された依存性
 
 入れ子になったモデルをうまく扱えません。そのため、リクエストのJSONボディが内部フィールドを持つJSONオブジェクトで、それが順番にネストされたJSONオブジェクトになっている場合、適切にドキュメント化やバリデーションをすることができません。
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 素晴らしいエディターの補助を得るために、Pythonの型ヒントを利用している点。
 
@@ -263,7 +263,7 @@ Angular 2にインスピレーションを受けた、統合された依存性
 
 `asyncio`に基づいた、Pythonのフレームワークの中でも非常に高速なものの一つです。Flaskと非常に似た作りになっています。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 Pythonの`asyncio`ループの代わりに、`uvloop`が利用されています。それにより、非常に高速です。
 
@@ -271,7 +271,7 @@ Pythonの`asyncio`ループの代わりに、`uvloop`が利用されています
 
 ///
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 物凄い性能を出す方法を見つけた点。
 
@@ -289,7 +289,7 @@ Pythonのウェブフレームワーク標準規格 (WSGI) を使用していま
 
 そのため、データのバリデーション、シリアライゼーション、ドキュメント化は、自動的にできずコードの中で行わなければなりません。あるいは、HugのようにFalconの上にフレームワークとして実装されなければなりません。このような分断は、パラメータとして1つのリクエストオブジェクトと1つのレスポンスオブジェクトを持つというFalconのデザインにインスピレーションを受けた他のフレームワークでも起こります。
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 素晴らしい性能を得るための方法を見つけた点。
 
@@ -315,7 +315,7 @@ Pydanticのようなデータのバリデーション、シリアライゼーシ
 
 ルーティングは一つの場所で宣言され、他の場所で宣言された関数を使用します (エンドポイントを扱う関数のすぐ上に配置できるデコレータを使用するのではなく) 。これはFlask (やStarlette) よりも、Djangoに近いです。これは、比較的緊密に結合されているものをコードの中で分離しています。
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 モデルの属性の「デフォルト」値を使用したデータ型の追加バリデーションを定義します。これはエディタの補助を改善するもので、以前はPydanticでは利用できませんでした。
 
@@ -337,13 +337,13 @@ OpenAPIやJSON Schemaのような標準に基づいたものではありませ
 
 以前のPythonの同期型Webフレームワーク標準 (WSGI) をベースにしているため、Websocketなどは扱えませんが、それでも高性能です。
 
-/// info | "情報"
+/// info | 情報
 
 HugはTimothy Crosleyにより作成されました。彼は<a href="https://github.com/timothycrosley/isort" class="external-link" target="_blank">`isort`</a>など、Pythonのファイル内のインポートの並び替えを自動的におこうなう素晴らしいツールの開発者です。
 
 ///
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 HugはAPIStarに部分的なインスピレーションを与えており、私が発見した中ではAPIStarと同様に最も期待の持てるツールの一つでした。
 
@@ -377,7 +377,7 @@ Hugは、**FastAPI**がヘッダーやクッキーを設定するために関数
 
 今ではAPIStarはOpenAPI仕様を検証するためのツールセットであり、ウェブフレームワークではありません。
 
-/// info | "情報"
+/// info | 情報
 
 APIStarはTom Christieにより開発されました。以下の開発者でもあります:
 
@@ -387,7 +387,7 @@ APIStarはTom Christieにより開発されました。以下の開発者でも
 
 ///
 
-/// check | "**FastAPI**へ与えたインスピレーション"
+/// check | **FastAPI**へ与えたインスピレーション
 
 存在そのもの。
 
@@ -411,7 +411,7 @@ Pydanticは、Pythonの型ヒントを元にデータのバリデーション、
 
 Marshmallowに匹敵しますが、ベンチマークではMarshmallowよりも高速です。また、Pythonの型ヒントを元にしているので、エディタの補助が素晴らしいです。
 
-/// check | "**FastAPI**での使用用途"
+/// check | **FastAPI**での使用用途
 
 データのバリデーション、データのシリアライゼーション、自動的なモデルの (JSON Schemaに基づいた) ドキュメント化の全てを扱えます。
 
@@ -447,7 +447,7 @@ Starletteは基本的なWebマイクロフレームワークの機能をすべ
 
 これは **FastAPI** が追加する主な機能の一つで、すべての機能は Pythonの型ヒントに基づいています (Pydanticを使用しています) 。これに加えて、依存性注入の仕組み、セキュリティユーティリティ、OpenAPIスキーマ生成などがあります。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 ASGIはDjangoのコアチームメンバーにより開発された新しい「標準」です。まだ「Pythonの標準 (PEP) 」ではありませんが、現在そうなるように進めています。
 
@@ -455,7 +455,7 @@ ASGIはDjangoのコアチームメンバーにより開発された新しい「
 
 ///
 
-/// check | "**FastAPI**での使用用途"
+/// check | **FastAPI**での使用用途
 
 webに関するコアな部分を全て扱います。その上に機能を追加します。
 
@@ -473,7 +473,7 @@ Uvicornは非常に高速なASGIサーバーで、uvloopとhttptoolsにより構
 
 Starletteや**FastAPI**のサーバーとして推奨されています。
 
-/// check | "**FastAPI**が推奨する理由"
+/// check | **FastAPI**が推奨する理由
 
 **FastAPI**アプリケーションを実行するメインのウェブサーバーである点。
 
index ce9dac56fece15d6ce879aaa62f111f966245652..d1da1f82d23824d85193bdbbc31d5437879ca2c9 100644 (file)
@@ -21,7 +21,7 @@ async def read_results():
     return results
 ```
 
-/// note | "備考"
+/// note | 備考
 
 `async def` を使用して作成された関数の内部でしか `await` は使用できません。
 
@@ -358,7 +358,7 @@ async def read_burgers():
 
 ## 非常に発展的な技術的詳細
 
-/// warning | "注意"
+/// warning | 注意
 
 恐らくスキップしても良いでしょう。
 
index 86926b21327194e515ef67e7b035bcd487653374..3ee742ec2ddd4c48be83e7c32fe4c944fe3008b7 100644 (file)
@@ -95,7 +95,7 @@ some/directory/fastapi/env/bin/pip
 `env/bin/pip`に`pip`バイナリが表示される場合は、正常に機能しています。🎉
 
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 この環境で`pip`を使って新しいパッケージをインストールするたびに、仮想環境を再度有効化します。
 
@@ -165,7 +165,7 @@ $ bash scripts/format-imports.sh
 
 そして、翻訳を処理するためのツール/スクリプトが、`./scripts/docs.py`に用意されています。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `./scripts/docs.py`のコードを見る必要はなく、コマンドラインからただ使うだけです。
 
@@ -254,7 +254,7 @@ Uvicornはデフォルトでポート`8000`を使用するため、ポート`800
 
 * あなたの言語の<a href="https://github.com/fastapi/fastapi/pulls" class="external-link" target="_blank">今あるプルリクエスト</a>を確認し、変更や承認をするレビューを追加します。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 すでにあるプルリクエストに<a href="https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request" class="external-link" target="_blank">修正提案つきのコメントを追加</a>できます。
 
@@ -282,7 +282,7 @@ Uvicornはデフォルトでポート`8000`を使用するため、ポート`800
 
 スペイン語の場合、2文字のコードは`es`です。したがって、スペイン語のディレクトリは`docs/es/`です。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 メイン (「公式」) 言語は英語で、`docs/en/`にあります。
 
@@ -323,7 +323,7 @@ docs/en/docs/features.md
 docs/es/docs/features.md
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 パスとファイル名の変更は、`en`から`es`への言語コードだけであることに注意してください。
 
@@ -398,7 +398,7 @@ Updating en
 
 これで、新しく作成された`docs/ht/`ディレクトリをコードエディターから確認できます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 翻訳を追加する前に、これだけで最初のプルリクエストを作成し、新しい言語の設定をセットアップします。
 
index c17e6372847003a6e8609fe82107be4376cb3452..4ea6bd8ffe7e3fa8fe1035186b409486b0612feb 100644 (file)
@@ -20,7 +20,7 @@ $ pip install "uvicorn[standard]"
 
 ////
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `standard` を加えることで、Uvicornがインストールされ、いくつかの推奨される依存関係を利用するようになります。
 
index 941ddb71b45331b47f9e051a71a47404598b84fc..7575fc4f70c47611df4a13f832373d69f6cf3a81 100644 (file)
@@ -42,7 +42,7 @@ PoetryやPipenvなど、他のインストール管理ツールを使用して
 
 FastAPIでは「パッチ」バージョンはバグ修正と非破壊的な変更に留めるという規約に従っています。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 「パッチ」は最後の数字を指します。例えば、`0.2.3` ではパッチバージョンは `3` です。
 
@@ -56,7 +56,7 @@ fastapi>=0.45.0,<0.46.0
 
 破壊的な変更と新機能実装は「マイナー」バージョンで加えられます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 「マイナー」は真ん中の数字です。例えば、`0.2.3` ではマイナーバージョンは `2` です。
 
index 73c0192c703b48587c9c2f9456190a938707482d..4024590cf0e1632147e6a0a2729ecf5f66aa7659 100644 (file)
@@ -62,7 +62,7 @@ second_user_data = {
 my_second_user: User = User(**second_user_data)
 ```
 
-/// info | "情報"
+/// info | 情報
 
 `**second_user_data` は以下を意味します:
 
index 7af6ce0c0b14880081170b1dc1ac068424703408..77ddf4654cb88e834bc7635d44cb91fb843a126d 100644 (file)
@@ -12,7 +12,7 @@
 
 しかしたとえまったく **FastAPI** を使用しない場合でも、それらについて少し学ぶことで利点を得ることができるでしょう。
 
-/// note | "備考"
+/// note | 備考
 
 もしあなたがPythonの専門家で、すでに型ヒントについてすべて知っているのであれば、次の章まで読み飛ばしてください。
 
@@ -175,7 +175,7 @@ John Doe
 {!../../docs_src/python_types/tutorial006.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 角括弧内の内部の型は「型パラメータ」と呼ばれています。
 
@@ -288,7 +288,7 @@ Pydanticの公式ドキュメントから引用:
 {!../../docs_src/python_types/tutorial011.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 Pydanticについてより学びたい方は<a href="https://docs.pydantic.dev/" class="external-link" target="_blank">ドキュメントを参照してください</a>.
 
@@ -320,7 +320,7 @@ Pydanticについてより学びたい方は<a href="https://docs.pydantic.dev/"
 
 重要なのは、Pythonの標準的な型を使うことで、(クラスやデコレータなどを追加するのではなく)1つの場所で **FastAPI** が多くの作業を代わりにやってくれているということです。
 
-/// info | "情報"
+/// info | 情報
 
 すでにすべてのチュートリアルを終えて、型についての詳細を見るためにこのページに戻ってきた場合は、<a href="https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html" class="external-link" target="_blank">`mypy`のチートシートを参照してください</a>
 
index 1d386040aa985e037624079bfc9fa03ea8db4778..5b3b3622b59aa7e753782827f12b954b032ea114 100644 (file)
@@ -10,7 +10,7 @@
 {!../../docs_src/body_fields/tutorial001.py!}
 ```
 
-/// warning | "注意"
+/// warning | 注意
 
 `Field`は他の全てのもの(`Query`、`Path`、`Body`など)とは違い、`fastapi`からではなく、`pydantic`から直接インポートされていることに注意してください。
 
@@ -26,7 +26,7 @@
 
 `Field`は`Query`や`Path`、`Body`と同じように動作し、全く同様のパラメータなどを持ちます。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 実際には次に見る`Query`や`Path`などは、共通の`Param`クラスのサブクラスのオブジェクトを作成しますが、それ自体はPydanticの`FieldInfo`クラスのサブクラスです。
 
@@ -38,7 +38,7 @@
 
 ///
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 型、デフォルト値、`Field`を持つ各モデルの属性が、`Path`や`Query`、`Body`の代わりに`Field`を持つ、*path operation 関数の*パラメータと同じ構造になっていることに注目してください。
 
index 647143ee54fda586c7d30e5ffce118d3bf250581..982c235658329b9124ab66433ab4958c0f1d8ac5 100644 (file)
@@ -12,7 +12,7 @@
 {!../../docs_src/body_multiple_params/tutorial001.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 この場合、ボディから取得する`item`はオプションであることに注意してください。デフォルト値は`None`です。
 
@@ -56,7 +56,7 @@
 }
 ```
 
-/// note | "備考"
+/// note | 備考
 
 以前と同じように`item`が宣言されていたにもかかわらず、`item`はキー`item`を持つボディの内部にあることが期待されていることに注意してください。
 
@@ -118,7 +118,7 @@ q: str = None
 {!../../docs_src/body_multiple_params/tutorial004.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 `Body`もまた、後述する `Query` や `Path` などと同様に、すべての検証パラメータとメタデータパラメータを持っています。
 
index 8703a40e7d6ff95d6771590e7229d63b2bb60564..dc2d5e81a96e2a7c4d038a5d53d9d2f4c743ea44 100644 (file)
@@ -162,7 +162,7 @@ Pydanticモデルを`list`や`set`などのサブタイプとして使用する
 }
 ```
 
-/// info | "情報"
+/// info | 情報
 
 `images`キーが画像オブジェクトのリストを持つようになったことに注目してください。
 
@@ -176,7 +176,7 @@ Pydanticモデルを`list`や`set`などのサブタイプとして使用する
 {!../../docs_src/body_nested_models/tutorial007.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 `Offer`は`Item`のリストであり、オプションの`Image`のリストを持っていることに注目してください。
 
@@ -228,7 +228,7 @@ Pydanticモデルではなく、`dict`を直接使用している場合はこの
 {!../../docs_src/body_nested_models/tutorial009.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 JSONはキーとして`str`しかサポートしていないことに注意してください。
 
index fde9f4f5e4349130d43f474715a6e82f94067f9d..fcaeb0d162db1c945f8b3104270b2f56ccbc328b 100644 (file)
@@ -34,7 +34,7 @@
 
 つまり、更新したいデータだけを送信して、残りはそのままにしておくことができます。
 
-/// note | "備考"
+/// note | 備考
 
 `PATCH`は`PUT`よりもあまり使われておらず、知られていません。
 
@@ -89,7 +89,7 @@
 {!../../docs_src/body_updates/tutorial002.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 実際には、HTTPの`PUT`操作でも同じテクニックを使用することができます。
 
@@ -97,7 +97,7 @@
 
 ///
 
-/// note | "備考"
+/// note | 備考
 
 入力モデルがまだ検証されていることに注目してください。
 
index 888d4388acceaa2e2ecaaca02a9f283d1f3b9675..277ee79c82f0f44728ea7435c5617b0f82075710 100644 (file)
@@ -8,7 +8,7 @@ APIはほとんどの場合 **レスポンス** ボディを送らなければ
 
 **リクエスト** ボディを宣言するために <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> モデルを使用します。そして、その全てのパワーとメリットを利用します。
 
-/// info | "情報"
+/// info | 情報
 
 データを送るには、`POST` (もっともよく使われる)、`PUT`、`DELETE` または `PATCH` を使うべきです。
 
@@ -113,7 +113,7 @@ GET リクエストでボディを送信することは、仕様では未定義
 
 <img src="/img/tutorial/body/image05.png">
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a>エディタを使用している場合は、<a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic PyCharm Plugin</a>が使用可能です。
 
@@ -161,7 +161,7 @@ GET リクエストでボディを送信することは、仕様では未定義
 * パラメータが**単数型** (`int`、`float`、`str`、`bool` など)の場合は**クエリ**パラメータとして解釈されます。
 * パラメータが **Pydantic モデル**型で宣言された場合、リクエスト**ボディ**として解釈されます。
 
-/// note | "備考"
+/// note | 備考
 
 FastAPIは、`= None`があるおかげで、`q`がオプショナルだとわかります。
 
index 1f45db17c2a9c827b7c9c78d653bdc110c6ba605..7f029b483d8137b1d6c149562c273266d3d4946b 100644 (file)
@@ -20,7 +20,7 @@
 {!../../docs_src/cookie_params/tutorial001.py!}
 ```
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `Cookie`は`Path`と`Query`の「姉妹」クラスです。また、同じ共通の`Param`クラスを継承しています。
 
@@ -28,7 +28,7 @@
 
 ///
 
-/// info | "情報"
+/// info | 情報
 
 クッキーを宣言するには、`Cookie`を使う必要があります。なぜなら、そうしないとパラメータがクエリのパラメータとして解釈されてしまうからです。
 
index 9530c51bfe81d27b1afe5b55b7c7f0985d068dde..9834a460b14c086ef4f3763c8220f9266f580dcf 100644 (file)
@@ -78,7 +78,7 @@
 
 <abbr title="Cross-Origin Resource Sharing (オリジン間リソース共有)">CORS</abbr>についてより詳しい情報は、<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS documentation</a> を参照して下さい。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `from starlette.middleware.cors import CORSMiddleware` も使用できます。
 
index be0ff81d48a1fbb88678b55bb1dd507e4fb130f7..7413332a8c48ac4c2d2744c6a356ad4e7e34b33b 100644 (file)
@@ -74,7 +74,7 @@ from myapp import app
 
 は実行されません。
 
-/// info | "情報"
+/// info | 情報
 
 より詳しい情報は、<a href="https://docs.python.org/3/library/__main__.html" class="external-link" target="_blank">公式Pythonドキュメント</a>を参照してください。
 
index fb23a7b2b982fe602fb67296d6880e60fb6de3f7..55885a61f69a89834eac06b07f8dd88da0f755ce 100644 (file)
@@ -185,7 +185,7 @@ commons: CommonQueryParams = Depends()
 
 ...そして **FastAPI** は何をすべきか知っています。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 役に立つというよりも、混乱するようであれば無視してください。それをする*必要*はありません。
 
index 59f21c3df7aee2d0d1a303bdd115f7e71a3fb05e..3b78f4e0b26116ae8839f7e0f80e1cbd986c53a9 100644 (file)
@@ -20,7 +20,7 @@
 
 これらの依存関係は、通常の依存関係と同様に実行・解決されます。しかし、それらの値(何かを返す場合)は*path operation関数*には渡されません。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 エディタによっては、未使用の関数パラメータをチェックしてエラーとして表示するものもあります。
 
index 7ef1caf0d42eae3dd1b6055d49ae609311699df0..bd4e689bf46b863f51e8e852d9d77907cc46fcb4 100644 (file)
@@ -4,13 +4,13 @@ FastAPIは、いくつかの<abbr title='時々"exit"、"cleanup"、"teardown"
 
 これを行うには、`return`の代わりに`yield`を使い、その後に追加のステップを書きます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `yield`は必ず一度だけ使用するようにしてください。
 
 ///
 
-/// info | "情報"
+/// info | 情報
 
 これを動作させるには、**Python 3.7** 以上を使用するか、**Python 3.6** では"backports"をインストールする必要があります:
 
@@ -22,7 +22,7 @@ pip install async-exit-stack async-generator
 
 ///
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 以下と一緒に使用できる関数なら何でも有効です:
 
@@ -57,7 +57,7 @@ pip install async-exit-stack async-generator
 {!../../docs_src/dependencies/tutorial007.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `async`や通常の関数を使用することができます。
 
@@ -109,7 +109,7 @@ pip install async-exit-stack async-generator
 
 **FastAPI** は、全てが正しい順序で実行されていることを確認します。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 これはPythonの<a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">Context Managers</a>のおかげで動作します。
 
@@ -137,7 +137,7 @@ pip install async-exit-stack async-generator
 
 レスポンスを返したり、レスポンスを変更したり、`HTTPException`を発生させたりする*前に*処理したいカスタム例外がある場合は、[カスタム例外ハンドラ](../handling-errors.md#_4){.internal-link target=_blank}を作成してください。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `HTTPException`を含む例外は、`yield`の*前*でも発生させることができます。ただし、後ではできません。
 
@@ -183,7 +183,7 @@ participant tasks as Background tasks
     end
 ```
 
-/// info | "情報"
+/// info | 情報
 
 **1つのレスポンス** だけがクライアントに送信されます。それはエラーレスポンスの一つかもしれませんし、*path operation*からのレスポンスかもしれません。
 
@@ -191,7 +191,7 @@ participant tasks as Background tasks
 
 ///
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 この図は`HTTPException`を示していますが、[カスタム例外ハンドラ](../handling-errors.md#_4){.internal-link target=_blank}を作成することで、他の例外を発生させることもできます。そして、その例外は依存関係の終了コードではなく、そのカスタム例外ハンドラによって処理されます。
 
@@ -221,7 +221,7 @@ with open("./somefile.txt") as f:
 
 ### `yield`を持つ依存関係でのコンテキストマネージャの使用
 
-/// warning | "注意"
+/// warning | 注意
 
 これは多かれ少なかれ、「高度な」発想です。
 
@@ -237,7 +237,7 @@ Pythonでは、<a href="https://docs.python.org/3/reference/datamodel.html#conte
 {!../../docs_src/dependencies/tutorial010.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 コンテキストマネージャを作成するもう一つの方法はwithです:
 
index f6728ee84ef36442965f2e3cdadea4cf9a9eda69..8965b602f280a34bef2c53883ba82002da164f95 100644 (file)
@@ -75,7 +75,7 @@
 
 そして、その関数は、*path operation関数*が行うのと同じ方法でパラメータを取ります。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 次の章では、関数以外の「もの」が依存関係として使用できるものを見ていきます。
 
@@ -100,7 +100,7 @@ common_parameters --> read_users
 
 この方法では、共有されるコードを一度書き、**FastAPI** が*path operations*のための呼び出しを行います。
 
-/// check | "確認"
+/// check | 確認
 
 特別なクラスを作成してどこかで **FastAPI** に渡して「登録」する必要はないことに注意してください。
 
@@ -118,7 +118,7 @@ common_parameters --> read_users
 
 それは重要ではありません。**FastAPI** は何をすべきかを知っています。
 
-/// note | "備考"
+/// note | 備考
 
 わからない場合は、ドキュメントの[Async: *"In a hurry?"*](../../async.md){.internal-link target=_blank}の中の`async`と`await`についてのセクションを確認してください。
 
index 754ec028e421ced9f5ee323320689d16a2315245..11b5ff0047b4961262fee4086d814b3f805ac4a1 100644 (file)
@@ -41,7 +41,7 @@
 {!../../docs_src/dependencies/tutorial005.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 *path operation関数*の中で宣言している依存関係は`query_or_cookie_extractor`の1つだけであることに注意してください。
 
@@ -81,7 +81,7 @@ async def needy_dependency(fresh_value: str = Depends(get_value, use_cache=False
 
 しかし、それでも非常に強力で、任意の深くネストされた依存関係「グラフ」(ツリー)を宣言することができます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 これらの単純な例では、全てが役に立つとは言えないかもしれません。
 
index ea522f91ff0ece359b322c73c7cdaec0be46d507..3ce7e604edac9f57a3d2b7ac7a0ca6ca271d000b 100644 (file)
@@ -30,7 +30,7 @@ Pydanticモデルのようなオブジェクトを受け取り、JSON互換版
 
 これはJSON形式のデータを含む大きな`str`を(文字列として)返しません。JSONと互換性のある値とサブの値を持つPython標準のデータ構造(例:`dict`)を返します。
 
-/// note | "備考"
+/// note | 備考
 
 `jsonable_encoder`は実際には **FastAPI** が内部的にデータを変換するために使用します。しかしこれは他の多くのシナリオで有用です。
 
index f739e81b486964b0e0bed3dd5eedaea4dc344da3..5ff5db47d67ed1587a8b32dbcd41fc3cfb9febc7 100644 (file)
@@ -8,7 +8,7 @@
 * **出力モデル**はパスワードをもつべきではありません。
 * **データベースモデル**はおそらくハッシュ化されたパスワードが必要になるでしょう。
 
-/// danger | "危険"
+/// danger | 危険
 
 ユーザーの平文のパスワードは絶対に保存しないでください。常に認証に利用可能な「安全なハッシュ」を保存してください。
 
@@ -134,7 +134,7 @@ UserInDB(
 )
 ```
 
-/// warning | "注意"
+/// warning | 注意
 
 サポートしている追加機能は、データの可能な流れをデモするだけであり、もちろん本当のセキュリティを提供しているわけではありません。
 
index 77f3b5fbe661dcd2b24adc29efea2f122c2c3703..3691d13d228cb3490df0e6727de2af9284059fea 100644 (file)
@@ -24,7 +24,7 @@ $ uvicorn main:app --reload
 
 </div>
 
-/// note | "備考"
+/// note | 備考
 
 `uvicorn main:app`は以下を示します:
 
@@ -139,7 +139,7 @@ OpenAPIスキーマは、FastAPIに含まれている2つのインタラクテ
 
 `FastAPI`は、APIのすべての機能を提供するPythonクラスです。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `FastAPI`は`Starlette`を直接継承するクラスです。
 
@@ -204,7 +204,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | "情報"
+/// info | 情報
 
 「パス」は一般に「エンドポイント」または「ルート」とも呼ばれます。
 
@@ -257,7 +257,7 @@ APIを構築するときは、通常、これらの特定のHTTPメソッドを
 * パス `/`
 * <abbr title="an HTTP GET method"><code>get</code> オペレーション</abbr>
 
-/// info | "`@decorator` について"
+/// info | `@decorator` について
 
 Pythonにおける`@something`シンタックスはデコレータと呼ばれます。
 
@@ -284,7 +284,7 @@ Pythonにおける`@something`シンタックスはデコレータと呼ばれ
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 各オペレーション (HTTPメソッド)は自由に使用できます。
 
@@ -322,7 +322,7 @@ Pythonにおける`@something`シンタックスはデコレータと呼ばれ
 {!../../docs_src/first_steps/tutorial003.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 違いが分からない場合は、[Async: *"急いでいますか?"*](../async.md#_1){.internal-link target=_blank}を確認してください。
 
index e94f16b21a0513f93860b55b7a1f7132bc64a083..d270fd75bab9e88a870f476af9de735b39d38b9d 100644 (file)
@@ -63,7 +63,7 @@ Pythonの例外なので、`return`ではなく、`raise`です。
 }
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `HTTPException`を発生させる際には、`str`だけでなく、JSONに変換できる任意の値を`detail`パラメータとして渡すことができます。
 
@@ -109,7 +109,7 @@ Pythonの例外なので、`return`ではなく、`raise`です。
 {"message": "Oops! yolo did something. There goes a rainbow..."}
 ```
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 また、`from starlette.requests import Request`と`from starlette.responses import JSONResponse`を使用することもできます。
 
@@ -166,7 +166,7 @@ path -> item_id
 
 #### `RequestValidationError`と`ValidationError`
 
-/// warning | "注意"
+/// warning | 注意
 
 これらは今のあなたにとって重要でない場合は省略しても良い技術的な詳細です。
 
@@ -192,7 +192,7 @@ path -> item_id
 {!../../docs_src/handling_errors/tutorial004.py!}
 ```
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 また、`from starlette.responses import PlainTextResponse`を使用することもできます。
 
index 3180b78b5688d05c74107159ed0b0d79f51434ad..c741005d391164562b0c551670440defae388459 100644 (file)
@@ -20,7 +20,7 @@
 {!../../docs_src/header_params/tutorial001.py!}
 ```
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `Header`は`Path`や`Query`、`Cookie`の「姉妹」クラスです。また、同じ共通の`Param`クラスを継承しています。
 
@@ -28,7 +28,7 @@
 
 ///
 
-/// info | "情報"
+/// info | 情報
 
 ヘッダーを宣言するには、`Header`を使う必要があります。なぜなら、そうしないと、パラメータがクエリのパラメータとして解釈されてしまうからです。
 
@@ -54,7 +54,7 @@
 {!../../docs_src/header_params/tutorial002.py!}
 ```
 
-/// warning | "注意"
+/// warning | 注意
 
 `convert_underscores`を`False`に設定する前に、HTTPプロキシやサーバの中にはアンダースコアを含むヘッダーの使用を許可していないものがあることに注意してください。
 
index c5fe272596aac748e8db66ea105bdfe06fe6ef8c..87d3751fd916cc23d532d423f7ae3162b0329864 100644 (file)
@@ -52,7 +52,7 @@ $ pip install "fastapi[all]"
 
 ...これには、コードを実行するサーバーとして使用できる `uvicorn`も含まれます。
 
-/// note | "備考"
+/// note | 備考
 
 パーツ毎にインストールすることも可能です。
 
index 8285b479e8fba0f7a9f04186db99a8b296dcc145..201322cb4787219c99e9811dd2c7402d8518fc3b 100644 (file)
@@ -47,7 +47,7 @@
 
 説明文 (description) の中で Markdown を使用できることに注意してください。たとえば、「login」は太字 (**login**) で表示され、「fancy」は斜体 (_fancy_) で表示されます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 使用するすべてのタグにメタデータを追加する必要はありません。
 
@@ -61,7 +61,7 @@
 {!../../docs_src/metadata/tutorial004.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 タグのより詳しい説明を知りたい場合は [Path Operation Configuration](path-operation-configuration.md#tags){.internal-link target=_blank} を参照して下さい。
 
index f4a503720c7057ae595706f8065431976635c7a1..3a3d8bb225d52526f2c3234399d6cc3729fae869 100644 (file)
@@ -11,7 +11,7 @@
 * その**レスポンス**に対して何かを実行したり、必要なコードを実行したりできます。
 * そして、**レスポンス**を返します。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `yield` を使った依存関係をもつ場合は、終了コードはミドルウェアの *後に* 実行されます。
 
@@ -35,7 +35,7 @@
 {!../../docs_src/middleware/tutorial001.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">'X-'プレフィックスを使用</a>してカスタムの独自ヘッダーを追加できます。
 
@@ -43,7 +43,7 @@
 
 ///
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `from starlette.requests import Request` を使用することもできます。
 
index 7eceb377d5bc5773625006c7a4b39e5b18f64a18..36223d35d7a06deb3aedce89917ac8461cf85ccf 100644 (file)
@@ -2,7 +2,7 @@
 
 *path operationデコレータ*を設定するためのパラメータがいくつかあります。
 
-/// warning | "注意"
+/// warning | 注意
 
 これらのパラメータは*path operation関数*ではなく、*path operationデコレータ*に直接渡されることに注意してください。
 
@@ -22,7 +22,7 @@
 
 そのステータスコードはレスポンスで使用され、OpenAPIスキーマに追加されます。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 また、`from starlette import status`を使用することもできます。
 
@@ -72,13 +72,13 @@ docstringに<a href="https://en.wikipedia.org/wiki/Markdown" class="external-lin
 {!../../docs_src/path_operation_configuration/tutorial005.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 `respnse_description`は具体的にレスポンスを参照し、`description`は*path operation*全般を参照していることに注意してください。
 
 ///
 
-/// check | "確認"
+/// check | 確認
 
 OpenAPIは*path operation*ごとにレスポンスの説明を必要としています。
 
index 42fbb2ee2c3b64cf45b00f4c95f55636e760d86c..7d55ad30c9c485d091f13b85ceb8a3b64504fe92 100644 (file)
@@ -20,7 +20,7 @@
 {!../../docs_src/path_params_numeric_validations/tutorial001.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 パスの一部でなければならないので、パスパラメータは常に必須です。
 
@@ -108,7 +108,7 @@ Pythonはその`*`で何かをすることはありませんが、それ以降
 * `lt`: より小さい(`l`ess `t`han)
 * `le`: 以下(`l`ess than or `e`qual)
 
-/// info | "情報"
+/// info | 情報
 
 `Query`、`Path`などは後に共通の`Param`クラスのサブクラスを見ることになります。(使う必要はありません)
 
@@ -116,7 +116,7 @@ Pythonはその`*`で何かをすることはありませんが、それ以降
 
 ///
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `fastapi`から\b`Query`、`Path`などをインポートすると、これらは実際には関数です。
 
index e1cb67a13a4e4fda66427cc62f65295e9e3376b9..d86a27cb4e2bdab83703b8ef59567c2c25550055 100644 (file)
@@ -24,7 +24,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
 
 ここでは、 `item_id` は `int` として宣言されています。
 
-/// check | "確認"
+/// check | 確認
 
 これにより、関数内でのエディターサポート (エラーチェックや補完など) が提供されます。
 
@@ -38,7 +38,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
 {"item_id":3}
 ```
 
-/// check | "確認"
+/// check | 確認
 
 関数が受け取った(および返した)値は、文字列の `"3"` ではなく、Pythonの `int` としての `3` であることに注意してください。
 
@@ -69,7 +69,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
 
 <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a> で見られるように、intのかわりに `float` が与えられた場合にも同様なエラーが表示されます。
 
-/// check | "確認"
+/// check | 確認
 
 したがって、Pythonの型宣言を使用することで、**FastAPI**はデータのバリデーションを行います。
 
@@ -85,7 +85,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | "確認"
+/// check | 確認
 
 繰り返しになりますが、Python型宣言を使用するだけで、**FastAPI**は対話的なAPIドキュメントを自動的に生成します(Swagger UIを統合)。
 
@@ -143,13 +143,13 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 <a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">Enumerations (もしくは、enums)はPython 3.4以降で利用できます</a>。
 
 ///
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 "AlexNet"、"ResNet"そして"LeNet"は機械学習<abbr title="Technically, Deep Learning model architectures">モデル</abbr>の名前です。
 
@@ -189,7 +189,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `ModelName.lenet.value` でも `"lenet"` 値にアクセスできます。
 
@@ -246,7 +246,7 @@ Starletteのオプションを直接使用することで、以下のURLの様
 {!../../docs_src/path_params/tutorial004.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 最初のスラッシュ (`/`)が付いている `/home/johndoe/myfile.txt` をパラメータが含んでいる必要があります。
 
index 9e54a6f5578263ed2e0f4f6637cbf0cda8979bc0..6450c91c483d2f50d01a48a08acc16173541d42c 100644 (file)
@@ -10,7 +10,7 @@
 
 クエリパラメータ `q` は `Optional[str]` 型で、`None` を許容する `str` 型を意味しており、デフォルトは `None` です。そのため、FastAPIはそれが必須ではないと理解します。
 
-/// note | "備考"
+/// note | 備考
 
 FastAPIは、 `q` はデフォルト値が `=None` であるため、必須ではないと理解します。
 
@@ -54,7 +54,7 @@ q: Optional[str] = None
 
 しかし、これはクエリパラメータとして明示的に宣言しています。
 
-/// info | "情報"
+/// info | 情報
 
 FastAPIは以下の部分を気にすることを覚えておいてください:
 
@@ -118,7 +118,7 @@ q: Union[str, None] = Query(default=None, max_length=50)
 {!../../docs_src/query_params_str_validations/tutorial005.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 デフォルト値を指定すると、パラメータは任意になります。
 
@@ -150,7 +150,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 {!../../docs_src/query_params_str_validations/tutorial006.py!}
 ```
 
-/// info | "情報"
+/// info | 情報
 
 これまで`...`を見たことがない方へ: これは特殊な単一値です。<a href="https://docs.python.org/3/library/constants.html#Ellipsis" class="external-link" target="_blank">Pythonの一部であり、"Ellipsis"と呼ばれています</a>。
 
@@ -187,7 +187,7 @@ http://localhost:8000/items/?q=foo&q=bar
 }
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 上述の例のように、`list`型のクエリパラメータを宣言するには明示的に`Query`を使用する必要があります。そうしない場合、リクエストボディと解釈されます。
 
@@ -230,7 +230,7 @@ http://localhost:8000/items/
 {!../../docs_src/query_params_str_validations/tutorial013.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 この場合、FastAPIはリストの内容をチェックしないことを覚えておいてください。
 
@@ -244,7 +244,7 @@ http://localhost:8000/items/
 
 その情報は、生成されたOpenAPIに含まれ、ドキュメントのユーザーインターフェースや外部のツールで使用されます。
 
-/// note | "備考"
+/// note | 備考
 
 ツールによってOpenAPIのサポートのレベルが異なる可能性があることを覚えておいてください。
 
index 6d41d3742dfa86b0ec79fa075836eb4245856b47..71f78eca5b4cfa6cf8a11a9ae5ae3019cd9235f1 100644 (file)
@@ -69,7 +69,7 @@ http://127.0.0.1:8000/items/?skip=20
 
 この場合、関数パラメータ `q` はオプショナルとなり、デフォルトでは `None` になります。
 
-/// check | "確認"
+/// check | 確認
 
 パスパラメータ `item_id` はパスパラメータであり、`q` はそれとは違ってクエリパラメータであると判別できるほど**FastAPI** が賢いということにも注意してください。
 
@@ -191,7 +191,7 @@ http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
 * `skip`、デフォルト値を `0` とする `int` 。
 * `limit`、オプショナルな `int` 。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 [パスパラメータ](path-params.md#_8){.internal-link target=_blank}と同様に `Enum` を使用できます。
 
index e03b9166d7ce7d5687310f4a81e689ca7c693cf5..1e4237b203ac3bf9f8fd578609186a5fed400824 100644 (file)
@@ -2,7 +2,7 @@
 
 `File`と`Form`を同時に使うことでファイルとフォームフィールドを定義することができます。
 
-/// info | "情報"
+/// info | 情報
 
 アップロードされたファイルやフォームデータを受信するには、まず<a href="https://andrew-d.github.io/python-multipart/" class="external-link" target="_blank">`python-multipart`</a>をインストールします。
 
@@ -28,7 +28,7 @@
 
 また、いくつかのファイルを`bytes`として、いくつかのファイルを`UploadFile`として宣言することができます。
 
-/// warning | "注意"
+/// warning | 注意
 
 *path operation*で複数の`File`と`Form`パラメータを宣言することができますが、JSONとして受け取ることを期待している`Body`フィールドを宣言することはできません。なぜなら、リクエストのボディは`application/json`の代わりに`multipart/form-data`を使ってエンコードされているからです。
 
index eb453c04a6193e8dadba6ea8541b37393ed3d0f4..f130c067fbc8889f339780b7322cbe43173a0ce8 100644 (file)
@@ -2,7 +2,7 @@
 
 JSONの代わりにフィールドを受け取る場合は、`Form`を使用します。
 
-/// info | "情報"
+/// info | 情報
 
 フォームを使うためには、まず<a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>をインストールします。
 
@@ -32,13 +32,13 @@ JSONの代わりにフィールドを受け取る場合は、`Form`を使用し
 
 `Form`では`Body`(および`Query`や`Path`、`Cookie`)と同じメタデータとバリデーションを宣言することができます。
 
-/// info | "情報"
+/// info | 情報
 
 `Form`は`Body`を直接継承するクラスです。
 
 ///
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 フォームのボディを宣言するには、明示的に`Form`を使用する必要があります。なぜなら、これを使わないと、パラメータはクエリパラメータやボディ(JSON)パラメータとして解釈されるからです。
 
@@ -50,7 +50,7 @@ HTMLフォーム(`<form></form>`)がサーバにデータを送信する方
 
 **FastAPI** は、JSONの代わりにそのデータを適切な場所から読み込むようにします。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 フォームからのデータは通常、`application/x-www-form-urlencoded`の「media type」を使用してエンコードされます。
 
@@ -60,7 +60,7 @@ HTMLフォーム(`<form></form>`)がサーバにデータを送信する方
 
 ///
 
-/// warning | "注意"
+/// warning | 注意
 
 *path operation*で複数の`Form`パラメータを宣言することができますが、JSONとして受け取ることを期待している`Body`フィールドを宣言することはできません。なぜなら、リクエストは`application/json`の代わりに`application/x-www-form-urlencoded`を使ってボディをエンコードするからです。
 
index 973f893de771ddcb6a2b3df60e27be05cdb30af0..97821f125af1f770b84c33c84435dab24ebccb24 100644 (file)
@@ -12,7 +12,7 @@
 {!../../docs_src/response_model/tutorial001.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 `response_model`は「デコレータ」メソッド(`get`、`post`など)のパラメータであることに注意してください。すべてのパラメータやボディのように、*path operation関数* のパラメータではありません。
 
@@ -31,7 +31,7 @@ FastAPIは`response_model`を使って以下のことをします:
 
 * 出力データをモデルのデータに限定します。これがどのように重要なのか以下で見ていきましょう。
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 レスポンスモデルは、関数の戻り値のアノテーションではなく、このパラメータで宣言されています。なぜなら、パス関数は実際にはそのレスポンスモデルを返すのではなく、`dict`やデータベースオブジェクト、あるいは他のモデルを返し、`response_model`を使用してフィールドの制限やシリアライズを行うからです。
 
@@ -57,7 +57,7 @@ FastAPIは`response_model`を使って以下のことをします:
 
 しかし、同じモデルを別の*path operation*に使用すると、すべてのクライアントにユーザーのパスワードを送信してしまうことになります。
 
-/// danger | "危険"
+/// danger | 危険
 
 ユーザーの平文のパスワードを保存したり、レスポンスで送信したりすることは絶対にしないでください。
 
@@ -130,13 +130,13 @@ FastAPIは`response_model`を使って以下のことをします:
 }
 ```
 
-/// info | "情報"
+/// info | 情報
 
 FastAPIはこれをするために、Pydanticモデルの`.dict()`を<a href="https://docs.pydantic.dev/latest/concepts/serialization/#modeldict" class="external-link" target="_blank">その`exclude_unset`パラメータ</a>で使用しています。
 
 ///
 
-/// info | "情報"
+/// info | 情報
 
 以下も使用することができます:
 
@@ -180,7 +180,7 @@ FastAPIは十分に賢いので(実際には、Pydanticが十分に賢い)`d
 
 そのため、それらはJSONレスポンスに含まれることになります。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 デフォルト値は`None`だけでなく、なんでも良いことに注意してください。
 例えば、リスト(`[]`)や`10.5`の`float`などです。
@@ -195,7 +195,7 @@ FastAPIは十分に賢いので(実際には、Pydanticが十分に賢い)`d
 
 これは、Pydanticモデルが1つしかなく、出力からいくつかのデータを削除したい場合のクイックショートカットとして使用することができます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 それでも、これらのパラメータではなく、複数のクラスを使用して、上記のようなアイデアを使うことをおすすめします。
 
@@ -209,7 +209,7 @@ FastAPIは十分に賢いので(実際には、Pydanticが十分に賢い)`d
 {!../../docs_src/response_model/tutorial005.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `{"name", "description"}`の構文はこれら2つの値をもつ`set`を作成します。
 
index 90b2908871b3b40d1ff671515aa15114b2b08907..56bcdaf6cb1d688b5ba5b360a450b159dae24fde 100644 (file)
@@ -12,7 +12,7 @@
 {!../../docs_src/response_status_code/tutorial001.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 `status_code`は「デコレータ」メソッド(`get`、`post`など)のパラメータであることに注意してください。すべてのパラメータやボディのように、*path operation関数*のものではありません。
 
@@ -20,7 +20,7 @@
 
 `status_code`パラメータはHTTPステータスコードを含む数値を受け取ります。
 
-/// info | "情報"
+/// info | 情報
 
 `status_code`は代わりに、Pythonの<a href="https://docs.python.org/3/library/http.html#http.HTTPStatus" class="external-link" target="_blank">`http.HTTPStatus`</a>のように、`IntEnum`を受け取ることもできます。
 
@@ -33,7 +33,7 @@
 
 <img src="https://fastapi.tiangolo.com/img/tutorial/response-status-code/image01.png">
 
-/// note | "備考"
+/// note | 備考
 
 いくつかのレスポンスコード(次のセクションを参照)は、レスポンスにボディがないことを示しています。
 
@@ -43,7 +43,7 @@ FastAPIはこれを知っていて、レスポンスボディがないというO
 
 ## HTTPステータスコードについて
 
-/// note | "備考"
+/// note | 備考
 
 すでにHTTPステータスコードが何であるかを知っている場合は、次のセクションにスキップしてください。
 
@@ -66,7 +66,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータス
     * クライアントからの一般的なエラーについては、`400`を使用することができます。
 * `500`以上はサーバーエラーのためのものです。これらを直接使うことはほとんどありません。アプリケーションコードやサーバーのどこかで何か問題が発生した場合、これらのステータスコードのいずれかが自動的に返されます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 それぞれのステータスコードとどのコードが何のためのコードなのかについて詳細は<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network">MDN</abbr> HTTP レスポンスステータスコードについてのドキュメント</a>を参照してください。
 
@@ -94,7 +94,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータス
 
 <img src="https://fastapi.tiangolo.com/img/tutorial/response-status-code/image02.png">
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 また、`from starlette import status`を使うこともできます。
 
index baf1bbedd4a4cb410f9a54c7cd436c72cc1e310a..44dfad737dd989c756fec8866536bc31511850c2 100644 (file)
@@ -24,7 +24,7 @@ JSON Schemaの追加情報を宣言する方法はいくつかあります。
 {!../../docs_src/schema_extra_example/tutorial002.py!}
 ```
 
-/// warning | "注意"
+/// warning | 注意
 
 これらの追加引数が渡されても、文書化のためのバリデーションは追加されず、注釈だけが追加されることを覚えておいてください。
 
index 51f7bf829a9e2a8f748f3e373644f46b722e6f98..6ace1b54278be1a3db393741a8e1c68b4db7420f 100644 (file)
@@ -26,7 +26,7 @@
 
 ## 実行
 
-/// info | "情報"
+/// info | 情報
 
 まず<a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>をインストールします。
 
@@ -56,7 +56,7 @@ $ uvicorn main:app --reload
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | "Authorizeボタン!"
+/// check | Authorizeボタン!
 
 すでにピカピカの新しい「Authorize」ボタンがあります。
 
@@ -68,7 +68,7 @@ $ uvicorn main:app --reload
 
 <img src="/img/tutorial/security/image02.png">
 
-/// note | "備考"
+/// note | 備考
 
 フォームに何を入力しても、まだうまくいきません。ですが、これから動くようになります。
 
@@ -114,7 +114,7 @@ OAuth2は、バックエンドやAPIがユーザーを認証するサーバー
 
 この例では、**Bearer**トークンを使用して**OAuth2**を**パスワード**フローで使用します。これには`OAuth2PasswordBearer`クラスを使用します。
 
-/// info | "情報"
+/// info | 情報
 
 「bearer」トークンが、唯一の選択肢ではありません。
 
@@ -132,7 +132,7 @@ OAuth2は、バックエンドやAPIがユーザーを認証するサーバー
 {!../../docs_src/security/tutorial001.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 ここで、`tokenUrl="token"`は、まだ作成していない相対URL`token`を指します。相対URLなので、`./token`と同じです。
 
@@ -146,7 +146,7 @@ OAuth2は、バックエンドやAPIがユーザーを認証するサーバー
 
 実際のpath operationもすぐに作ります。
 
-/// info | "情報"
+/// info | 情報
 
 非常に厳格な「Pythonista」であれば、パラメーター名のスタイルが`token_url`ではなく`tokenUrl`であることを気に入らないかもしれません。
 
@@ -176,7 +176,7 @@ oauth2_scheme(some, parameters)
 
 **FastAPI**は、この依存関係を使用してOpenAPIスキーマ (および自動APIドキュメント) で「セキュリティスキーム」を定義できることを知っています。
 
-/// info | "技術詳細"
+/// info | 技術詳細
 
 **FastAPI**は、`OAuth2PasswordBearer` クラス (依存関係で宣言されている) を使用してOpenAPIのセキュリティスキームを定義できることを知っています。これは`fastapi.security.oauth2.OAuth2`、`fastapi.security.base.SecurityBase`を継承しているからです。
 
index 0edbd983f345850f42d3f436e4aba465ae39eb86..898bbd797f8759bae145c9bae7c9734ce4ec2727 100644 (file)
@@ -54,7 +54,7 @@ Pydanticモデルの `User` として、 `current_user` の型を宣言するこ
 
 その関数の中ですべての入力補完や型チェックを行う際に役に立ちます。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 リクエストボディはPydanticモデルでも宣言できることを覚えているかもしれません。
 
@@ -62,7 +62,7 @@ Pydanticモデルの `User` として、 `current_user` の型を宣言するこ
 
 ///
 
-/// check | "確認"
+/// check | 確認
 
 依存関係システムがこのように設計されているおかげで、 `User` モデルを返却する別の依存関係(別の"dependables")を持つことができます。
 
index c68e7e7f2f04d83468b8acd84d3a35009276e5fb..37b8bb95838105cf014b6c58233c21f46c555690 100644 (file)
@@ -32,7 +32,7 @@ OAuth 1というものもありましたが、これはOAuth2とは全く異な
 
 OAuth2は、通信を暗号化する方法を指定せず、アプリケーションがHTTPSで提供されることを想定しています。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 **デプロイ**のセクションでは、TraefikとLet's Encryptを使用して、無料でHTTPSを設定する方法が紹介されています。
 
@@ -89,7 +89,7 @@ OpenAPIでは、以下のセキュリティスキームを定義しています:
     * この自動検出メカニズムは、OpenID Connectの仕様で定義されているものです。
 
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 Google、Facebook、Twitter、GitHubなど、他の認証/認可プロバイダを統合することも可能で、比較的簡単です。
 
index b2f51161070c4080b88e155f12054957943ffee1..825a1b2b35b10ff7c4d066fd19989eec24ee9277 100644 (file)
@@ -44,7 +44,7 @@ $ pip install python-jose[cryptography]
 
 ここでは、推奨されているものを使用します:<a href="https://cryptography.io/" class="external-link" target="_blank">pyca/cryptography</a>。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 このチュートリアルでは以前、<a href="https://pyjwt.readthedocs.io/" class="external-link" target="_blank">PyJWT</a>を使用していました。
 
@@ -86,7 +86,7 @@ $ pip install passlib[bcrypt]
 
 </div>
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 `passlib`を使用すると、**Django**や**Flask**のセキュリティプラグインなどで作成されたパスワードを読み取れるように設定できます。
 
@@ -102,7 +102,7 @@ $ pip install passlib[bcrypt]
 
 PassLib の「context」を作成します。これは、パスワードのハッシュ化と検証に使用されるものです。
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 PassLibのcontextには、検証だけが許された非推奨の古いハッシュアルゴリズムを含む、様々なハッシュアルゴリズムを使用した検証機能もあります。
 
@@ -122,7 +122,7 @@ PassLibのcontextには、検証だけが許された非推奨の古いハッシ
 {!../../docs_src/security/tutorial004.py!}
 ```
 
-/// note | "備考"
+/// note | 備考
 
 新しい(偽の)データベース`fake_users_db`を確認すると、ハッシュ化されたパスワードが次のようになっていることがわかります:`"$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW"`
 
@@ -219,7 +219,7 @@ IDの衝突を回避するために、ユーザーのJWTトークンを作成す
 Username: `johndoe`
 Password: `secret`
 
-/// check | "確認"
+/// check | 確認
 
 コードのどこにも平文のパスワード"`secret`"はなく、ハッシュ化されたものしかないことを確認してください。
 
@@ -244,7 +244,7 @@ Password: `secret`
 
 <img src="/img/tutorial/security/image10.png">
 
-/// note | "備考"
+/// note | 備考
 
 ヘッダーの`Authorization`には、`Bearer`で始まる値があります。
 
index e6002a1fb6e25c82e6b5d64dd3f1dbc40591119b..37ea22dd7c4bad4de0d42cdece5b96e3860af5bc 100644 (file)
@@ -11,7 +11,7 @@
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `from starlette.staticfiles import StaticFiles` も使用できます。
 
index 6c5e712e84a6c609a41b2230363a740b7b60be6a..b7e80cb8df19e1723986d8853facf1c7ce0e8513 100644 (file)
@@ -22,7 +22,7 @@
 {!../../docs_src/app_testing/tutorial001.py!}
 ```
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 テスト関数は `async def` ではなく、通常の `def` であることに注意してください。
 
@@ -32,7 +32,7 @@
 
 ///
 
-/// note | "技術詳細"
+/// note | 技術詳細
 
 `from starlette.testclient import TestClient` も使用できます。
 
@@ -40,7 +40,7 @@
 
 ///
 
-/// tip | "豆知識"
+/// tip | 豆知識
 
 FastAPIアプリケーションへのリクエストの送信とは別に、テストで `async` 関数 (非同期データベース関数など) を呼び出したい場合は、高度なチュートリアルの[Async Tests](../advanced/async-tests.md){.internal-link target=_blank} を参照してください。
 
@@ -121,7 +121,7 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
 
 (`httpx` または `TestClient` を使用して) バックエンドにデータを渡す方法の詳細は、<a href="https://www.python-httpx.org" class="external-link" target="_blank">HTTPXのドキュメント</a>を確認してください。
 
-/// info | "情報"
+/// info | 情報
 
 `TestClient` は、Pydanticモデルではなく、JSONに変換できるデータを受け取ることに注意してください。
 
index 94867c1988e481811d5cd59d75dfa4f451a39d67..273c9a479ef9abed4390fa52cede40ad11b6d75e 100644 (file)
@@ -4,7 +4,7 @@
 
 이 함수들은 `async def` 또는 평범하게 `def`으로 선언할 수 있습니다.
 
-/// warning | "경고"
+/// warning | 경고
 
 이벤트 핸들러는 주 응용 프로그램에서만 작동합니다. [하위 응용 프로그램 - 마운트](./sub-applications.md){.internal-link target=_blank}에서는 작동하지 않습니다.
 
 
 이 예제에서 `shutdown` 이벤트 핸들러 함수는 `"Application shutdown"`이라는 텍스트가 적힌 `log.txt` 파일을 추가할 것입니다.
 
-/// info | "정보"
+/// info | 정보
 
 `open()` 함수에서 `mode="a"`는 "추가"를 의미합니다. 따라서 이미 존재하는 파일의 내용을 덮어쓰지 않고 새로운 줄을 추가합니다.
 
 ///
 
-/// tip | "팁"
+/// tip | 
 
 이 예제에서는 파일과 상호작용 하기 위해 파이썬 표준 함수인 `open()`을 사용하고 있습니다.
 
@@ -50,7 +50,7 @@
 
 ///
 
-/// info | "정보"
+/// info | 정보
 
 이벤트 핸들러에 관한 내용은 <a href="https://www.starlette.io/events/" class="external-link" target="_blank">Starlette 이벤트 문서</a>에서 추가로 확인할 수 있습니다.
 
index cb628fa10b6a3fa472ad169282626460de932b08..31704727ca97eee0b96cd08ede7e88c2309516e9 100644 (file)
@@ -6,7 +6,7 @@
 
 이어지는 장에서는 여러분이 다른 옵션, 구성 및 추가 기능을 보실 수 있습니다.
 
-/// tip | "팁"
+/// tip | 
 
 다음 장들이 **반드시 "심화"**인 것은 아닙니다.
 
index 3f87b320ae6530e64a10858bf5b85b647a21efc6..f762e94b580abca788ea0ac09af63a4d927d0fc6 100644 (file)
@@ -40,7 +40,7 @@
 
 ### 추가 정보
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 `from starlette.responses import Response` 또는 `from starlette.responses import JSONResponse`를 사용할 수도 있습니다.
 
index 20389ff2a15216ea84650cab64ce3710168e7f7d..aedebff9d95d8052424584e0831b9aa3e063e654 100644 (file)
@@ -38,7 +38,7 @@ Pydantic 모델로 데이터 변환을 수행하지 않으며, 내용을 다른
 {!../../docs_src/response_directly/tutorial001.py!}
 ```
 
-/// note | "기술적 세부 사항"
+/// note | 기술적 세부 사항
 
 `from starlette.responses import JSONResponse`를 사용할 수도 있습니다.
 
index 54cf655c5bde22a0a20420ae4fe548ed118ff13e..974a06969870cd3df5b23320da9ab29b9d5c9bd1 100644 (file)
@@ -28,7 +28,7 @@
 {!../../docs_src/response_headers/tutorial001.py!}
 ```
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 `from starlette.responses import Response`나 `from starlette.responses import JSONResponse`를 사용할 수도 있습니다.
 
index dfc2caa7896494ffc859416aef9d94ba35346f5e..fa0d204886e8e9ecd72e641664b58375593254b8 100644 (file)
@@ -21,7 +21,7 @@ async def read_results():
     return results
 ```
 
-/// note | "참고"
+/// note | 참고
 
 `async def`로 생성된 함수 내부에서만 `await`를 사용할 수 있습니다.
 
@@ -369,7 +369,7 @@ FastAPI를 사용하지 않더라도, 높은 호환성 및 <a href="https://anyi
 
 ## 매우 세부적인 기술적 사항
 
-/// warning | "경고"
+/// warning | 경고
 
 이 부분은 넘어가도 됩니다.
 
index 502a36fc05343454ae309607931ec5513e7217b9..e8b2746c5f107c645b6c5a37670c7f3148322caf 100644 (file)
@@ -4,7 +4,7 @@ FastAPI 어플리케이션을 배포할 때 일반적인 접근 방법은 **리
 
 리눅스 컨테이너를 사용하는 데에는 **보안**, **반복 가능성**, **단순함** 등의 장점이 있습니다.
 
-/// tip | "팁"
+/// tip | 
 
 시간에 쫓기고 있고 이미 이런것들을 알고 있다면 [`Dockerfile`👇](#build-a-docker-image-for-fastapi)로 점프할 수 있습니다.
 
@@ -133,7 +133,7 @@ Successfully installed fastapi pydantic uvicorn
 
 </div>
 
-/// info | "정보"
+/// info | 정보
 
 패키지 종속성을 정의하고 설치하기 위한 방법과 도구는 다양합니다.
 
@@ -231,7 +231,7 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
 
     프로그램이 `/code`에서 시작하고 그 속에 `./app` 디렉터리가 여러분의 코드와 함께 들어있기 때문에, **Uvicorn**은 이를 보고 `app`을 `app.main`으로부터 **불러 올** 것입니다.
 
-/// tip | "팁"
+/// tip | 
 
 각 코드 라인을 코드의 숫자 버블을 클릭하여 리뷰할 수 있습니다. 👆
 
@@ -305,7 +305,7 @@ $ docker build -t myimage .
 
 </div>
 
-/// tip | "팁"
+/// tip | 
 
 맨 끝에 있는 `.` 에 주목합시다. 이는 `./`와 동등하며, 도커에게 컨테이너 이미지를 빌드하기 위한 디렉터리를 알려줍니다.
 
@@ -409,7 +409,7 @@ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
 
 **HTTPS**와 **인증서**의 **자동** 취득을 다루는 것은 다른 컨테이너가 될 수 있는데, 예를 들어 <a href="https://traefik.io/" class="external-link" target="_blank">Traefik</a>을 사용하는 것입니다.
 
-/// tip | "팁"
+/// tip | 
 
 Traefik은 도커, 쿠버네티스, 그리고 다른 도구와 통합되어 있어 여러분의 컨테이너를 포함하는 HTTPS를 셋업하고 설정하는 것이 매우 쉽습니다.
 
@@ -441,7 +441,7 @@ Traefik은 도커, 쿠버네티스, 그리고 다른 도구와 통합되어 있
 
 이 요소가 요청들의 **로드**를 읽어들이고 각 워커에게 (바라건대) **균형적으로** 분배한다면, 이 요소는 일반적으로 **로드 밸런서**라고 불립니다.
 
-/// tip | "팁"
+/// tip | 
 
 HTTPS를 위해 사용된 **TLS 종료 프록시** 요소 또한 **로드 밸런서**가 될 수 있습니다.
 
@@ -524,7 +524,7 @@ HTTPS를 위해 사용된 **TLS 종료 프록시** 요소 또한 **로드 밸런
 
 만약 여러분이 **여러개의 컨테이너**를 가지고 있다면, 아마도 각각의 컨테이너는 **하나의 프로세스**를 가지고 있을 것입니다(예를 들어, **쿠버네티스** 클러스터에서). 그러면 여러분은 복제된 워커 컨테이너를 실행하기 **이전에**, 하나의 컨테이너에 있는 **이전의 단계들을** 수행하는 단일 프로세스를 가지는 **별도의 컨테이너들**을 가지고 싶을 것입니다.
 
-/// info | "정보"
+/// info | 정보
 
 만약 여러분이 쿠버네티스를 사용하고 있다면, 아마도 이는 <a href="https://kubernetes.io/docs/concepts/workloads/pods/init-containers/" class="external-link" target="_blank">Init Container</a>일 것입니다.
 
@@ -544,7 +544,7 @@ HTTPS를 위해 사용된 **TLS 종료 프록시** 요소 또한 **로드 밸런
 
 * <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker" class="external-link" target="_blank">tiangolo/uvicorn-gunicorn-fastapi</a>.
 
-/// warning | "경고"
+/// warning | 경고
 
 여러분이 이 베이스 이미지 또는 다른 유사한 이미지를 필요로 하지 **않을** 높은 가능성이 있으며, [위에서 설명된 것처럼: FastAPI를 위한 도커 이미지 빌드하기](#build-a-docker-image-for-fastapi) 처음부터 이미지를 빌드하는 것이 더 나을 수 있습니다.
 
@@ -556,7 +556,7 @@ HTTPS를 위해 사용된 **TLS 종료 프록시** 요소 또한 **로드 밸런
 
 또한 스크립트를 통해 <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker#pre_start_path" class="external-link" target="_blank">**시작하기 전 사전 단계**</a>를 실행하는 것을 지원합니다.
 
-/// tip | "팁"
+/// tip | 
 
 모든 설정과 옵션을 보려면, 도커 이미지 페이지로 이동합니다: <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker" class="external-link" target="_blank">tiangolo/uvicorn-gunicorn-fastapi</a>.
 
@@ -687,7 +687,7 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
 
 11. `uvicorn` 커맨드를 실행하여, `app.main`에서 불러온 `app` 객체를 사용하도록 합니다.
 
-/// tip | "팁"
+/// tip | 
 
 버블 숫자를 클릭해 각 줄이 하는 일을 알아볼 수 있습니다.
 
index 39976faf5b2861febda06768471a3a56026db7ce..b40b25cd8f587d9fde2a2ba29bc06c4b4395e475 100644 (file)
@@ -17,7 +17,7 @@
 
 지금부터 <a href="https://gunicorn.org/" class="external-link" target="_blank">**구니콘**</a>을 **유비콘 워커 프로세스**와 함께 사용하는 방법을 알려드리겠습니다.
 
-/// info | "정보"
+/// info | 정보
 
 만약 도커와 쿠버네티스 같은 컨테이너를 사용하고 있다면 다음 챕터 [FastAPI와 컨테이너 - 도커](docker.md){.internal-link target=_blank}에서 더 많은 정보를 얻을 수 있습니다.
 
index f3b3c2d7b83d6d48efbd3903895950d249c5d0ae..559a892ab94ade0fce7efbf710ab8334270fb3be 100644 (file)
@@ -43,7 +43,7 @@ fastapi>=0.45.0,<0.46.0
 
 FastAPI는 오류를 수정하고, 일반적인 변경사항을 위해 "패치"버전의 관습을 따릅니다.
 
-/// tip | "팁"
+/// tip | 
 
 여기서 말하는 "패치"란 버전의 마지막 숫자로, 예를 들어 `0.2.3` 버전에서 "패치"는 `3`을 의미합니다.
 
@@ -57,7 +57,7 @@ fastapi>=0.45.0,<0.46.0
 
 수정된 사항과 새로운 요소들이 "마이너" 버전에 추가되었습니다.
 
-/// tip | "팁"
+/// tip | 
 
 "마이너"란 버전 넘버의 가운데 숫자로, 예를 들어서 `0.2.3`의 "마이너" 버전은 `2`입니다.
 
index 09c2fd6d31e937091df381e8978069e606b2c0b0..1e6af3ceba81fb579605a1efaf4fd7848e324622 100644 (file)
@@ -1,6 +1,6 @@
 # 환경 변수
 
-/// tip | "팁"
+/// tip | 
 
 만약 "환경 변수"가 무엇이고, 어떻게 사용하는지 알고 계시다면, 이 챕터를 스킵하셔도 좋습니다.
 
@@ -63,7 +63,7 @@ name = os.getenv("MY_NAME", "World")
 print(f"Hello {name} from Python")
 ```
 
-/// tip | "팁"
+/// tip | 
 
 <a href="https://docs.python.org/3.8/library/os.html#os.getenv" class="external-link" target="_blank">`os.getenv()`</a> 의 두 번째 인자는 반환할 기본값입니다.
 
@@ -151,7 +151,7 @@ Hello World from Python
 
 </div>
 
-/// tip | "팁"
+/// tip | 
 
 <a href="https://12factor.net/config" class="external-link" target="_blank">The Twelve-Factor App: Config</a> 에서 좀 더 자세히 알아볼 수 있습니다.
 
index b6f6f7af2e0864fe1d790ff313969730a9b90303..5e880c298240850f23b843315c61e2506b27f466 100644 (file)
@@ -63,7 +63,7 @@ second_user_data = {
 my_second_user: User = User(**second_user_data)
 ```
 
-/// info | "정보"
+/// info | 정보
 
 `**second_user_data`가 뜻하는 것:
 
index 6d73461898a07afb98af4cda05bbaf708eeafff6..7cc98ba76148425be3016382f0a111e21e8e9e6c 100644 (file)
@@ -12,7 +12,7 @@
 
 비록 **FastAPI**를 쓰지 않는다고 하더라도, 조금이라도 알아두면 도움이 될 것입니다.
 
-/// note | "참고"
+/// note | 참고
 
 파이썬에 능숙하셔서 타입 힌트에 대해 모두 아신다면, 다음 챕터로 건너뛰세요.
 
@@ -175,7 +175,7 @@ John Doe
 {!../../docs_src/python_types/tutorial006.py!}
 ```
 
-/// tip | "팁"
+/// tip | 
 
 대괄호 안의 내부 타입은 "타입 매개변수(type paramters)"라고 합니다.
 
@@ -287,7 +287,7 @@ Pydantic 공식 문서 예시:
 {!../../docs_src/python_types/tutorial011.py!}
 ```
 
-/// info | "정보"
+/// info | 정보
 
 Pydantic<에 대해 더 배우고 싶다면 <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">공식 문서</a>를 참고하세요.</a>
 
@@ -319,7 +319,7 @@ Pydantic<에 대해 더 배우고 싶다면 <a href="https://docs.pydantic.dev/"
 
 가장 중요한 건, 표준 파이썬 타입을 한 곳에서(클래스를 더하거나, 데코레이터 사용하는 대신) 사용함으로써 **FastAPI**가 당신을 위해 많은 일을 해준다는 사실이죠.
 
-/// info | "정보"
+/// info | 정보
 
 만약 모든 자습서를 다 보았음에도 타입에 대해서 더 보고자 방문한 경우에는 <a href="https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html" class="external-link" target="_blank">`mypy`에서 제공하는 "cheat sheet"</a>이 좋은 자료가 될 겁니다.
 
index a13159c2713df21dd8ee60749e9389fabd704126..f6532f3698d0fb480d725336c96f1b345ab4232f 100644 (file)
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.10+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -46,7 +46,7 @@
 
 //// tab | Python 3.8+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -58,7 +58,7 @@
 
 ////
 
-/// warning | "경고"
+/// warning | 경고
 
 `Field`는 다른 것들처럼 (`Query`, `Path`, `Body` 등) `fastapi`에서가 아닌 `pydantic`에서 바로 임포트 되는 점에 주의하세요.
 
@@ -94,7 +94,7 @@
 
 //// tab | Python 3.10+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
 
 //// tab | Python 3.8+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
 
 `Field`는 `Query`, `Path`와 `Body`와 같은 방식으로 동작하며, 모두 같은 매개변수들 등을 가집니다.
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 실제로 `Query`, `Path`등, 여러분이 앞으로 볼 다른 것들은 공통 클래스인 `Param` 클래스의 서브클래스 객체를 만드는데, 그 자체로 Pydantic의 `FieldInfo` 클래스의 서브클래스입니다.
 
 
 ///
 
-/// tip | "팁"
+/// tip | 
 
 주목할 점은 타입, 기본 값 및 `Field`로 이루어진 각 모델 어트리뷰트가  `Path`, `Query`와 `Body`대신 `Field`를 사용하는 *경로 작동 함수*의 매개변수와 같은 구조를 가진다는 점 입니다.
 
 
 여러분이 예제를 선언할 때 나중에 이 공식 문서에서 별도 정보를 추가하는 방법을 배울 것입니다.
 
-/// warning | "경고"
+/// warning | 경고
 
 별도 키가 전달된 `Field` 또한 여러분의 어플리케이션의 OpenAPI 스키마에 나타날 것입니다.
 이런 키가 OpenAPI 명세서, [the OpenAPI validator](https://validator.swagger.io/)같은 몇몇 OpenAPI 도구들에 포함되지 못할 수 있으며, 여러분이 생성한 스키마와 호환되지 않을 수 있습니다.
index 0a0f34585bcc9e833f8e3eeebb1ed22d34ba5b22..569ff016e9df3b3c0b064ecb0aec76a9644c6d32 100644 (file)
@@ -14,7 +14,7 @@
 {!../../docs_src/body_multiple_params/tutorial001.py!}
 ```
 
-/// note | "참고"
+/// note | 참고
 
 이 경우에는 본문으로 부터 가져온 `       item`은 기본값이 `None`이기 때문에, 선택사항이라는 점을 유의해야 합니다.
 
@@ -58,7 +58,7 @@
 }
 ```
 
-/// note | "참고"
+/// note | 참고
 
 이전과 같이 `item`이 선언 되었더라도, 본문 내의 `item` 키가 있을 것이라고 예측합니다.
 
@@ -120,7 +120,7 @@ FastAPI는 요청을 자동으로 변환해, 매개변수의 `item`과 `user`를
 q: Optional[str] = None
 ```
 
-/// info | "정보"
+/// info | 정보
 
 `Body` 또한 `Query`, `Path` 그리고 이후에 볼 다른 것들처럼 동일한 추가 검증과 메타데이터 매개변수를 갖고 있습니다.
 
index 12fb4e0cc1a94e2410b9ea464682fad34a0f7228..e9b1d2e183abef6ff7c08355cd9bb9e20d8c53ba 100644 (file)
@@ -161,7 +161,7 @@ Pydantic 모델의 각 어트리뷰트는 타입을 갖습니다.
 }
 ```
 
-/// info | "정보"
+/// info | 정보
 
 `images` 키가 어떻게 이미지 객체 리스트를 갖는지 주목하세요.
 
@@ -175,7 +175,7 @@ Pydantic 모델의 각 어트리뷰트는 타입을 갖습니다.
 {!../../docs_src/body_nested_models/tutorial007.py!}
 ```
 
-/// info | "정보"
+/// info | 정보
 
 `Offer`가 선택사항 `Image` 리스트를 차례로 갖는 `Item` 리스트를 어떻게 가지고 있는지 주목하세요
 
@@ -227,7 +227,7 @@ Pydantic 모델 대신에 `dict`를 직접 사용하여 작업할 경우, 이러
 {!../../docs_src/body_nested_models/tutorial009.py!}
 ```
 
-/// tip | "팁"
+/// tip | 
 
 JSON은 오직 `str`형 키만 지원한다는 것을 염두에 두세요.
 
index 8df8d556e9d0dc27eacc95fdb688532fdbde40ca..9e614ef1cc3d0dd57a035163d0ecc0a4f0da2523 100644 (file)
@@ -8,7 +8,7 @@
 
 **요청** 본문을 선언하기 위해서 모든 강력함과 이점을 갖춘 <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> 모델을 사용합니다.
 
-/// info | "정보"
+/// info | 정보
 
 데이터를 보내기 위해, (좀 더 보편적인) `POST`, `PUT`, `DELETE` 혹은 `PATCH` 중에 하나를 사용하는 것이 좋습니다.
 
 
 <img src="/img/tutorial/body/image05.png">
 
-/// tip | "팁"
+/// tip | 
 
 만약 <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a>를 편집기로 사용한다면, <a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic PyCharm Plugin</a>을 사용할 수 있습니다.
 
 * 만약 매개변수가 (`int`, `float`, `str`, `bool` 등과 같은) **유일한 타입**으로 되어있으면, **쿼리** 매개변수로 해석될 것입니다.
 * 만약 매개변수가 **Pydantic 모델** 타입으로 선언되어 있으면, 요청 **본문**으로 해석될 것입니다.
 
-/// note | "참고"
+/// note | 참고
 
 FastAPI는 `q`의 값이 필요없음을 알게 될 것입니다. 기본 값이 `= None`이기 때문입니다.
 
index 1e21e069da765c6760901f28cb2afbdb98647ec6..427539210da2f29a9974f661d77a2f5f76af366c 100644 (file)
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.10+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -46,7 +46,7 @@
 
 //// tab | Python 3.8+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -90,7 +90,7 @@
 
 //// tab | Python 3.10+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
 
 //// tab | Python 3.8+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
 
 ////
 
-/// note | "기술 세부사항"
+/// note | 기술 세부사항
 
 `Cookie`는 `Path` 및 `Query`의 "자매"클래스입니다. 이 역시 동일한 공통 `Param` 클래스를 상속합니다.
 
 
 ///
 
-/// info | "정보"
+/// info | 정보
 
 쿠키를 선언하기 위해서는 `Cookie`를 사용해야 합니다. 그렇지 않으면 해당 매개변수를 쿼리 매개변수로 해석하기 때문입니다.
 
index 65357ae3f664ea52254b482a44e3295ba12701e3..0222e6258c67cc6def9cb60b648b8488f1e178c4 100644 (file)
@@ -78,7 +78,7 @@
 
 <abbr title="교차-출처 리소스 공유">CORS</abbr>에 대한 더 많은 정보를 알고싶다면, <a href="https://developer.mozilla.org/ko/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS 문서</a>를 참고하기 바랍니다.
 
-/// note | "기술적 세부 사항"
+/// note | 기술적 세부 사항
 
 `from starlette.middleware.cors import CORSMiddleware` 역시 사용할 수 있습니다.
 
index 27e8f9abff638a9534f1fb55627b54dee8241803..fcb68b565bcdfe642c9bf3c14b7500dd139c20bc 100644 (file)
@@ -74,7 +74,7 @@ from myapp import app
 
 은 실행되지 않습니다.
 
-/// info | "정보"
+/// info | 정보
 
 자세한 내용은 <a href="https://docs.python.org/3/library/__main__.html" class="external-link" target="_blank">공식 Python 문서</a>를 확인하세요
 
index 7430efbb4e7bb015656254863cab9a0b410b109d..41e48aefcdeb2fedce4bce1444a9718adff8d955 100644 (file)
@@ -266,7 +266,7 @@ commons: CommonQueryParams = Depends()
 
 ...이렇게 코드를 단축하여도 **FastAPI**는 무엇을 해야하는지 알고 있습니다.
 
-/// tip | "팁"
+/// tip | 
 
 만약 이것이 도움이 되기보다 더 헷갈리게 만든다면, 잊어버리십시오. 이것이 반드시 필요한 것은 아닙니다.
 
index e71ba8546d8fd6088e9c99c5e6230c716455562c..fab636b7f99961094b33be1593330715237bd714 100644 (file)
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.8 Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -46,7 +46,7 @@
 
 이러한 의존성들은 기존 의존성들과 같은 방식으로 실행/해결됩니다. 그러나 값은 (무엇이든 반환한다면) *경로 작동 함수*에 제공되지 않습니다.
 
-/// tip | "팁"
+/// tip | 
 
 일부 편집기에서는 사용되지 않는 함수 매개변수를 검사하고 오류로 표시합니다.
 
@@ -56,7 +56,7 @@
 
 ///
 
-/// info | "정보"
+/// info | 정보
 
 이 예시에서 `X-Key`와 `X-Token`이라는 커스텀 헤더를 만들어 사용했습니다.
 
@@ -90,7 +90,7 @@
 
 //// tab | Python 3.8 Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
 
 //// tab | Python 3.8 Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
 
 //// tab | Python 3.8 Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
index dd6586c3edf769645cc6523d26ec2293c8f289a3..0ad8b55fdf1f083b4e5e9703df3231cdf9152a27 100644 (file)
@@ -24,7 +24,7 @@
 
 //// tab | Python 3.8 Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
index f7b2f1788934d244cbae60111bd2f776c2fe6d5e..1aba6e787cc3ee12b6866d6676b0a87039cb73aa 100644 (file)
@@ -57,7 +57,7 @@
 
 //// tab | Python 3.10+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -71,7 +71,7 @@
 
 //// tab | Python 3.8+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
 
 그 후 위의 값을 포함한 `dict` 자료형으로 반환할 뿐입니다.
 
-/// info | "정보"
+/// info | 정보
 
 FastAPI는 0.95.0 버전부터 `Annotated`에 대한 지원을 (그리고 이를 사용하기 권장합니다) 추가했습니다.
 
@@ -139,7 +139,7 @@ FastAPI는 0.95.0 버전부터 `Annotated`에 대한 지원을 (그리고 이를
 
 //// tab | Python 3.10+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -153,7 +153,7 @@ FastAPI는 0.95.0 버전부터 `Annotated`에 대한 지원을 (그리고 이를
 
 //// tab | Python 3.8+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -195,7 +195,7 @@ FastAPI는 0.95.0 버전부터 `Annotated`에 대한 지원을 (그리고 이를
 
 //// tab | Python 3.10+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -209,7 +209,7 @@ FastAPI는 0.95.0 버전부터 `Annotated`에 대한 지원을 (그리고 이를
 
 //// tab | Python 3.8+ Annotated가 없는 경우
 
-/// tip | "팁"
+/// tip | 
 
 가능하다면 `Annotated`가 달린 버전을 권장합니다.
 
@@ -231,7 +231,7 @@ FastAPI는 0.95.0 버전부터 `Annotated`에 대한 지원을 (그리고 이를
 
 그리고 그 함수는 *경로 작동 함수*가 작동하는 것과 같은 방식으로 매개변수를 받습니다.
 
-/// tip | "팁"
+/// tip | 
 
 여러분은 다음 장에서 함수를 제외하고서, "다른 것들"이 어떻게 의존성으로 사용되는지 알게 될 것입니다.
 
@@ -256,7 +256,7 @@ common_parameters --> read_users
 
 이렇게 하면 공용 코드를 한번만 적어도 되며, **FastAPI**는 *경로 작동*을 위해 이에 대한 호출을 처리합니다.
 
-/// check | "확인"
+/// check | 확인
 
 특별한 클래스를 만들지 않아도 되며, 이러한 것 혹은 비슷한 종류를 **FastAPI**에 "등록"하기 위해 어떤 곳에 넘겨주지 않아도 됩니다.
 
@@ -300,7 +300,7 @@ commons: Annotated[dict, Depends(common_parameters)]
 
 ////
 
-/// tip | "팁"
+/// tip | 
 
 이는 그저 표준 파이썬이고 "type alias"라고 부르며 사실 **FastAPI**에 국한되는 것은 아닙니다.
 
@@ -322,7 +322,7 @@ commons: Annotated[dict, Depends(common_parameters)]
 
 아무 문제 없습니다. **FastAPI**는 무엇을 할지 알고 있습니다.
 
-/// note | "참고"
+/// note | 참고
 
 잘 모르시겠다면, [Async: *"In a hurry?"*](../../async.md){.internal-link target=_blank} 문서에서 `async`와 `await`에 대해 확인할 수 있습니다.
 
index 732566d6dc3db1fd0e2832d0764a000d330a8b5d..52277f2586858853c2bc2d19c6ca7622b95c01dc 100644 (file)
@@ -30,7 +30,7 @@ Pydantic 모델과 같은 객체를 받고 JSON 호환 가능한 버전으로 
 
 길이가 긴 문자열 형태의 JSON 형식(문자열)의 데이터가 들어있는 상황에서는 `str`로 반환하지 않습니다. JSON과 모두 호환되는 값과 하위 값이 있는 Python 표준 데이터 구조 (예: `dict`)를 반환합니다.
 
-/// note | "참고"
+/// note | 참고
 
 실제로 `jsonable_encoder`는 **FastAPI** 에서 내부적으로 데이터를 변환하는 데 사용하지만, 다른 많은 곳에서도 이는 유용합니다.
 
index c2c48fb3edc334c5c516e9f2fc4789b9ee3ae26c..4a689b74a4a98f09286b91309ce6d0c186794054 100644 (file)
@@ -24,7 +24,7 @@ $ uvicorn main:app --reload
 
 </div>
 
-/// note | "참고"
+/// note | 참고
 
 `uvicorn main:app` 명령은 다음을 의미합니다:
 
@@ -139,7 +139,7 @@ API와 통신하는 클라이언트(프론트엔드, 모바일, IoT 애플리케
 
 `FastAPI`는 당신의 API를 위한 모든 기능을 제공하는 파이썬 클래스입니다.
 
-/// note | "기술 세부사항"
+/// note | 기술 세부사항
 
 `FastAPI`는 `Starlette`를 직접 상속하는 클래스입니다.
 
@@ -205,7 +205,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | "정보"
+/// info | 정보
 
 "경로"는 일반적으로 "엔드포인트" 또는 "라우트"라고도 불립니다.
 
@@ -259,7 +259,7 @@ API를 설계할 때 일반적으로 특정 행동을 수행하기 위해 특정
 * 경로 `/`
 * <abbr title="HTTP GET 메소드"><code>get</code> 작동</abbr> 사용
 
-/// info | "`@decorator` 정보"
+/// info | `@decorator` 정보
 
 이 `@something` 문법은 파이썬에서 "데코레이터"라 부릅니다.
 
@@ -286,7 +286,7 @@ API를 설계할 때 일반적으로 특정 행동을 수행하기 위해 특정
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "팁"
+/// tip | 
 
 각 작동(HTTP 메소드)을 원하는 대로 사용해도 됩니다.
 
@@ -324,7 +324,7 @@ URL "`/`"에 대한 `GET` 작동을 사용하는 요청을 받을 때마다 **Fa
 {!../../docs_src/first_steps/tutorial003.py!}
 ```
 
-/// note | "참고"
+/// note | 참고
 
 차이점을 모르겠다면 [Async: *"바쁘신 경우"*](../async.md#_1){.internal-link target=_blank}을 확인하세요.
 
index 26e19886934434598589467ee216f0d77742f217..972f52a337309f73d78ffa8ac09f1d5a3f9ed3e2 100644 (file)
@@ -20,7 +20,7 @@
 {!../../docs_src/header_params/tutorial001.py!}
 ```
 
-/// note | "기술 세부사항"
+/// note | 기술 세부사항
 
 `Header`는 `Path`, `Query` 및 `Cookie`의 "자매"클래스입니다. 이 역시 동일한 공통 `Param` 클래스를 상속합니다.
 
@@ -28,7 +28,7 @@
 
 ///
 
-/// info | "정보"
+/// info | 정보
 
 헤더를 선언하기 위해서 `Header`를 사용해야 합니다. 그렇지 않으면 해당 매개변수를 쿼리 매개변수로 해석하기 때문입니다.
 
@@ -54,7 +54,7 @@
 {!../../docs_src/header_params/tutorial002.py!}
 ```
 
-/// warning | "경고"
+/// warning | 경고
 
 `convert_underscore`를 `False`로 설정하기 전에, 어떤 HTTP 프록시들과 서버들은 언더스코어가 포함된 헤더 사용을 허락하지 않는다는 것을 명심하십시오.
 
index a148bc76e990ec6c0c3802e8d9cae312a223b16d..9f5328992f0f9b38867019b0ea7047987e348476 100644 (file)
@@ -53,7 +53,7 @@ $ pip install "fastapi[all]"
 
 ...이는 코드를 실행하는 서버로 사용할 수 있는 `uvicorn` 또한 포함하고 있습니다.
 
-/// note | "참고"
+/// note | 참고
 
 부분적으로 설치할 수도 있습니다.
 
index f36f11a2736052e8490c0c149781eb3041ed21f5..0547066f15e4d8f01c50d323702b4474de3b5c74 100644 (file)
@@ -11,7 +11,7 @@
 * **응답** 또는 다른 필요한 코드를 실행시키는 동작을 할 수 있습니다.
 * **응답**를 반환합니다.
 
-/// note | "기술 세부사항"
+/// note | 기술 세부사항
 
 만약 `yield`를 사용한 의존성을 가지고 있다면, 미들웨어가 실행되고 난 후에 exit이 실행됩니다.
 
@@ -35,7 +35,7 @@
 {!../../docs_src/middleware/tutorial001.py!}
 ```
 
-/// tip | "팁"
+/// tip | 
 
 사용자 정의 헤더는 <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">'X-' 접두사를 사용</a>하여 추가할 수 있습니다.
 
@@ -43,7 +43,7 @@
 
 ///
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 `from starlette.requests import request`를 사용할 수도 있습니다.
 
index 6ebe613a80dbcf9b18c7bd7620859ef232d45488..75a9c71ce853e63c770d690a3ae39def18d6d6b8 100644 (file)
@@ -2,7 +2,7 @@
 
 *경로 작동 데코레이터*를 설정하기 위해서 전달할수 있는 몇 가지 매개변수가 있습니다.
 
-/// warning | "경고"
+/// warning | 경고
 
 아래 매개변수들은 *경로 작동 함수*가 아닌 *경로 작동 데코레이터*에 직접 전달된다는 사실을 기억하십시오.
 
@@ -22,7 +22,7 @@
 
 각 상태 코드들은 응답에 사용되며, OpenAPI 스키마에 추가됩니다.
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 다음과 같이 임포트하셔도 좋습니다. `from starlette import status`.
 
 {!../../docs_src/path_operation_configuration/tutorial005.py!}
 ```
 
-/// info | "정보"
+/// info | 정보
 
 `response_description`은 구체적으로 응답을 지칭하며, `description`은 일반적인 *경로 작동*을 지칭합니다.
 
 ///
 
-/// check | "확인"
+/// check | 확인
 
 OpenAPI는 각 *경로 작동*이 응답에 관한 설명을 요구할 것을 명시합니다.
 
index caab2d453aa416f5a2a7b4766ba63793c99216f8..736f2dc1d2160f23e1a94564a5df9c44d82e4d07 100644 (file)
@@ -20,7 +20,7 @@
 {!../../docs_src/path_params_numeric_validations/tutorial001.py!}
 ```
 
-/// note | "참고"
+/// note | 참고
 
 경로 매개변수는 경로의 일부여야 하므로 언제나 필수적입니다.
 
 * `lt`: 작거나(`l`ess `t`han)
 * `le`: 작거나 같은(`l`ess than or `e`qual)
 
-/// info | "정보"
+/// info | 정보
 
 `Query`, `Path`, 그리고 나중에게 보게될 것들은 (여러분이 사용할 필요가 없는) 공통 `Param` 클래스의 서브 클래스입니다.
 
 
 ///
 
-/// note | "기술 세부사항"
+/// note | 기술 세부사항
 
 `fastapi`에서 `Query`, `Path` 등을 임포트 할 때, 이것들은 실제로 함수입니다.
 
index 09a27a7b3a422a7c5cc88fa39d7be3de26fb86d9..21808e2cafcde684c244da67a76713bfd21d9369 100644 (file)
@@ -24,7 +24,7 @@
 
 위의 예시에서, `item_id`는 `int`로 선언되었습니다.
 
-/// check | "확인"
+/// check | 확인
 
 이 기능은 함수 내에서 오류 검사, 자동완성 등의 편집기 기능을 활용할 수 있게 해줍니다.
 
@@ -38,7 +38,7 @@
 {"item_id":3}
 ```
 
-/// check | "확인"
+/// check | 확인
 
 함수가 받은(반환도 하는) 값은 문자열 `"3"`이 아니라 파이썬 `int` 형인 `3`입니다.
 
@@ -69,7 +69,7 @@
 
 `int`가 아닌 `float`을 전달하는 경우에도 동일한 오류가 나타납니다: <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a>
 
-/// check | "확인"
+/// check | 확인
 
 즉, 파이썬 타입 선언을 하면 **FastAPI**는 데이터 검증을 합니다.
 
@@ -85,7 +85,7 @@
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | "확인"
+/// check | 확인
 
 그저 파이썬 타입 선언을 하기만 하면 **FastAPI**는 자동 대화형 API 문서(Swagger UI)를 제공합니다.
 
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// info | "정보"
+/// info | 정보
 
 <a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">열거형(또는 enums)</a>은 파이썬 버전 3.4 이후로 사용 가능합니다.
 
 ///
 
-/// tip | "팁"
+/// tip | 
 
 혹시 궁금하다면, "AlexNet", "ResNet", 그리고 "LeNet"은 그저 기계 학습 <abbr title="기술적으로 정확히는 딥 러닝 모델 구조">모델</abbr>들의 이름입니다.
 
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// tip | "팁"
+/// tip | 
 
 `ModelName.lenet.value`로도 값 `"lenet"`에 접근할 수 있습니다.
 
@@ -246,7 +246,7 @@ Starlette의 옵션을 직접 이용하여 다음과 같은 URL을 사용함으
 {!../../docs_src/path_params/tutorial004.py!}
 ```
 
-/// tip | "팁"
+/// tip | 
 
 매개변수가 가져야 하는 값이 `/home/johndoe/myfile.txt`와 같이 슬래시로 시작(`/`)해야 할 수 있습니다.
 
index e44f6dd16c705652adda3682a42a0d4d64c2a47b..71f884e834e6b1efaf7feafa9c7b2e4015645bcd 100644 (file)
@@ -10,7 +10,7 @@
 
 쿼리 매개변수 `q`는 `Optional[str]` 자료형입니다. 즉, `str` 자료형이지만 `None` 역시 될 수 있음을 뜻하고, 실제로 기본값은 `None`이기 때문에 FastAPI는 이 매개변수가 필수가 아니라는 것을 압니다.
 
-/// note | "참고"
+/// note | 참고
 
 FastAPI는 `q`의 기본값이 `= None`이기 때문에 필수가 아님을 압니다.
 
@@ -54,7 +54,7 @@ q: Optional[str] = None
 
 하지만 명시적으로 쿼리 매개변수를 선언합니다.
 
-/// info | "정보"
+/// info | 정보
 
 FastAPI는 다음 부분에 관심이 있습니다:
 
@@ -118,7 +118,7 @@ q: str = Query(None, max_length=50)
 {!../../docs_src/query_params_str_validations/tutorial005.py!}
 ```
 
-/// note | "참고"
+/// note | 참고
 
 기본값을 갖는 것만으로 매개변수는 선택적이 됩니다.
 
@@ -150,7 +150,7 @@ q: Optional[str] = Query(None, min_length=3)
 {!../../docs_src/query_params_str_validations/tutorial006.py!}
 ```
 
-/// info | "정보"
+/// info | 정보
 
 이전에 `...`를 본적이 없다면: 특별한 단일값으로, <a href="https://docs.python.org/3/library/constants.html#Ellipsis" class="external-link" target="_blank">파이썬의 일부이며 "Ellipsis"라 부릅니다</a>.
 
@@ -187,7 +187,7 @@ http://localhost:8000/items/?q=foo&q=bar
 }
 ```
 
-/// tip | "팁"
+/// tip | 
 
 위의 예와 같이 `list` 자료형으로 쿼리 매개변수를 선언하려면 `Query`를 명시적으로 사용해야 합니다. 그렇지 않으면 요청 본문으로 해석됩니다.
 
@@ -230,7 +230,7 @@ http://localhost:8000/items/
 {!../../docs_src/query_params_str_validations/tutorial013.py!}
 ```
 
-/// note | "참고"
+/// note | 참고
 
 이 경우 FastAPI는 리스트의 내용을 검사하지 않음을 명심하기 바랍니다.
 
@@ -244,7 +244,7 @@ http://localhost:8000/items/
 
 해당 정보는 생성된 OpenAPI에 포함되고 문서 사용자 인터페이스 및 외부 도구에서 사용됩니다.
 
-/// note | "참고"
+/// note | 참고
 
 도구에 따라 OpenAPI 지원 수준이 다를 수 있음을 명심하기 바랍니다.
 
index b2a946c092514e5f9acfd22ec225c5ffc13b69c8..7fa3e8c53d529f266e4c0eb4c6219c8a71d13bd7 100644 (file)
@@ -69,13 +69,13 @@ http://127.0.0.1:8000/items/?skip=20
 
 이 경우 함수 매개변수 `q`는 선택적이며 기본값으로 `None` 값이 됩니다.
 
-/// check | "확인"
+/// check | 확인
 
 **FastAPI**는 `item_id`가 경로 매개변수이고 `q`는 경로 매개변수가 아닌 쿼리 매개변수라는 것을 알 정도로 충분히 똑똑합니다.
 
 ///
 
-/// note | "참고"
+/// note | 참고
 
 FastAPI는 `q`가 `= None`이므로 선택적이라는 것을 인지합니다.
 
@@ -200,7 +200,7 @@ http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
 * `skip`, 기본값이 `0`인 `int`.
 * `limit`, 선택적인 `int`.
 
-/// tip | "팁"
+/// tip | 
 
 [경로 매개변수](path-params.md#_8){.internal-link target=_blank}와 마찬가지로 `Enum`을 사용할 수 있습니다.
 
index 40579dd51a5bd1dbf450ff30fd05e7f2ba26bb44..ca0f4397831859bf0cf80289c370715f88fae710 100644 (file)
@@ -2,7 +2,7 @@
 
 `File`을 사용하여 클라이언트가 업로드할 파일들을 정의할 수 있습니다.
 
-/// info | "정보"
+/// info | 정보
 
 업로드된 파일을 전달받기 위해 먼저 <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>를 설치해야합니다.
 
@@ -28,7 +28,7 @@
 {!../../docs_src/request_files/tutorial001.py!}
 ```
 
-/// info | "정보"
+/// info | 정보
 
 `File` 은 `Form` 으로부터 직접 상속된 클래스입니다.
 
@@ -36,7 +36,7 @@
 
 ///
 
-/// tip | "팁"
+/// tip | 
 
 File의 본문을 선언할 때, 매개변수가 쿼리 매개변수 또는 본문(JSON) 매개변수로 해석되는  것을 방지하기 위해 `File` 을 사용해야합니다.
 
@@ -104,7 +104,7 @@ contents = myfile.file.read()
 
 ///
 
-/// note | "Starlette 기술적 세부사항"
+/// note | Starlette 기술적 세부사항
 
 **FastAPI**의 `UploadFile` 은 **Starlette**의 `UploadFile` 을 직접적으로 상속받지만, **Pydantic** 및 FastAPI의 다른 부분들과의 호환성을 위해 필요한 부분들이 추가되었습니다.
 
@@ -116,7 +116,7 @@ HTML의 폼들(`<form></form>`)이 서버에 데이터를 전송하는 방식은
 
 **FastAPI**는 JSON 대신 올바른 위치에서 데이터를 읽을 수 있도록 합니다.
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 폼의 데이터는 파일이 포함되지 않은 경우 일반적으로 "미디어 유형" `application/x-www-form-urlencoded` 을 사용해 인코딩 됩니다.
 
@@ -126,7 +126,7 @@ HTML의 폼들(`<form></form>`)이 서버에 데이터를 전송하는 방식은
 
 ///
 
-/// warning | "경고"
+/// warning | 경고
 
 다수의 `File` 과 `Form` 매개변수를 한 *경로 작동*에 선언하는 것이 가능하지만, 요청의 본문이 `application/json` 가 아닌 `multipart/form-data` 로 인코딩 되기 때문에 JSON으로 받아야하는 `Body` 필드를 함께 선언할 수는 없습니다.
 
@@ -148,7 +148,7 @@ HTML의 폼들(`<form></form>`)이 서버에 데이터를 전송하는 방식은
 
 선언한대로, `bytes` 의 `list` 또는 `UploadFile` 들을 전송받을 것입니다.
 
-/// note | "참고"
+/// note | 참고
 
 2019년 4월 14일부터 Swagger UI가 하나의 폼 필드로 다수의 파일을 업로드하는 것을 지원하지 않습니다. 더 많은 정보를 원하면,  <a href="https://github.com/swagger-api/swagger-ui/issues/4276" class="external-link" target="_blank">#4276</a>과 <a href="https://github.com/swagger-api/swagger-ui/issues/3641" class="external-link" target="_blank">#3641</a>을 참고하세요.
 
@@ -158,7 +158,7 @@ HTML의 폼들(`<form></form>`)이 서버에 데이터를 전송하는 방식은
 
 ///
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 `from starlette.responses import HTMLResponse` 역시 사용할  수 있습니다.
 
index 24501fe34f06c109bdad37bc6f2530a99603620c..75bca9f1548312db9ee6dce82f63f9a87ee0f0ed 100644 (file)
@@ -2,7 +2,7 @@
 
 `File` 과 `Form` 을 사용하여 파일과 폼을 함께 정의할 수 있습니다.
 
-/// info | "정보"
+/// info | 정보
 
 파일과 폼 데이터를 함께, 또는 각각 업로드하기 위해 먼저 <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>를 설치해야합니다.
 
@@ -28,7 +28,7 @@
 
 어떤 파일들은 `bytes`로, 또 어떤 파일들은 `UploadFile`로 선언할 수 있습니다.
 
-/// warning | "경고"
+/// warning | 경고
 
 다수의 `File`과 `Form` 매개변수를 한 *경로 작동*에 선언하는 것이 가능하지만, 요청의 본문이 `application/json`가 아닌 `multipart/form-data`로 인코딩 되기 때문에 JSON으로 받아야하는 `Body` 필드를 함께 선언할 수는 없습니다.
 
index 74034e34de2a777690ac599d49f1753f06646dec..6ba9654d657a29a340f6c58c5b0b39063a6d66d0 100644 (file)
@@ -12,7 +12,7 @@
 {!../../docs_src/response_model/tutorial001.py!}
 ```
 
-/// note | "참고"
+/// note | 참고
 
 `response_model`은 "데코레이터" 메소드(`get`, `post`, 등)의 매개변수입니다. 모든 매개변수들과 본문(body)처럼 *경로 작동 함수*가 아닙니다.
 
@@ -31,7 +31,7 @@ FastAPI는 이 `response_model`를 사용하여:
 
 * 해당 모델의 출력 데이터 제한. 이것이 얼마나 중요한지 아래에서 볼 것입니다.
 
-/// note | "기술 세부사항"
+/// note | 기술 세부사항
 
 응답 모델은 함수의 타입 어노테이션 대신 이 매개변수로 선언하는데, 경로 함수가 실제 응답 모델을 반환하지 않고 `dict`, 데이터베이스 객체나 기타 다른 모델을 `response_model`을 사용하여 필드 제한과 직렬화를 수행하고 반환할 수 있기 때문입니다
 
@@ -57,7 +57,7 @@ FastAPI는 이 `response_model`를 사용하여:
 
 그러나 동일한 모델을 다른 *경로 작동*에서 사용할 경우, 모든 클라이언트에게 사용자의 비밀번호를 발신할 수 있습니다.
 
-/// danger | "위험"
+/// danger | 위험
 
 절대로 사용자의 평문 비밀번호를 저장하거나 응답으로 발신하지 마십시오.
 
@@ -130,13 +130,13 @@ FastAPI는 이 `response_model`를 사용하여:
 }
 ```
 
-/// info | "정보"
+/// info | 정보
 
 FastAPI는 이를 위해 Pydantic 모델의 `.dict()`의 <a href="https://docs.pydantic.dev/latest/concepts/serialization/#modeldict" class="external-link" target="_blank"> `exclude_unset` 매개변수</a>를 사용합니다.
 
 ///
 
-/// info | "정보"
+/// info | 정보
 
 아래 또한 사용할 수 있습니다:
 
@@ -181,7 +181,7 @@ ID가 `baz`인 항목(items)처럼 기본값과 동일한 값을 갖는다면:
 
 따라서 JSON 스키마에 포함됩니다.
 
-/// tip | "팁"
+/// tip | 
 
 `None` 뿐만 아니라 다른 어떤 것도 기본값이 될 수 있습니다.
 
@@ -197,7 +197,7 @@ ID가 `baz`인 항목(items)처럼 기본값과 동일한 값을 갖는다면:
 
 Pydantic 모델이 하나만 있고 출력에서 ​​일부 데이터를 제거하려는 경우 빠른 지름길로 사용할 수 있습니다.
 
-/// tip | "팁"
+/// tip | 
 
 하지만 이러한 매개변수 대신 여러 클래스를 사용하여 위 아이디어를 사용하는 것을 추천합니다.
 
@@ -211,7 +211,7 @@ Pydantic 모델이 하나만 있고 출력에서 ​​일부 데이터를 제
 {!../../docs_src/response_model/tutorial005.py!}
 ```
 
-/// tip | "팁"
+/// tip | 
 
 문법 `{"name", "description"}`은 두 값을 갖는 `set`을 만듭니다.
 
index 57eef6ba170b2d639ec60354103aaecef9acd9c8..8e3a16645d905331148f2f3f664f8a59f68d2260 100644 (file)
@@ -12,7 +12,7 @@
 {!../../docs_src/response_status_code/tutorial001.py!}
 ```
 
-/// note | "참고"
+/// note | 참고
 
 `status_code` 는 "데코레이터" 메소드(`get`, `post` 등)의 매개변수입니다. 모든 매개변수들과 본문처럼 *경로 작동 함수*가 아닙니다.
 
@@ -20,7 +20,7 @@
 
 `status_code` 매개변수는 HTTP 상태 코드를 숫자로 입력받습니다.
 
-/// info | "정보"
+/// info | 정보
 
 `status_code` 는 파이썬의 `http.HTTPStatus` 와 같은 `IntEnum` 을 입력받을 수도 있습니다.
 
@@ -33,7 +33,7 @@
 
 <img src="https://fastapi.tiangolo.com/img/tutorial/response-status-code/image01.png">
 
-/// note | "참고"
+/// note | 참고
 
 어떤 응답 코드들은 해당 응답에 본문이 없다는 것을 의미하기도 합니다 (다음 항목 참고).
 
@@ -43,7 +43,7 @@
 
 ## HTTP 상태 코드에 대하여
 
-/// note | "참고"
+/// note | 참고
 
 만약 HTTP 상태 코드에 대하여 이미 알고있다면, 다음 항목으로 넘어가십시오.
 
@@ -66,7 +66,7 @@ HTTP는 세자리의 숫자 상태 코드를 응답의 일부로 전송합니다
     * 일반적인 클라이언트 오류의 경우 `400` 을 사용할 수 있습니다.
 * `5xx` 상태 코드는 서버 오류에 사용됩니다. 이것들을 직접 사용할 일은 거의 없습니다. 응용 프로그램 코드나 서버의 일부에서 문제가 발생하면 자동으로 이들 상태 코드 중 하나를 반환합니다.
 
-/// tip | "팁"
+/// tip | 
 
 각각의 상태 코드와 이들이 의미하는 내용에 대해 더 알고싶다면 <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network">MDN</abbr> HTTP 상태 코드에 관한 문서</a> 를 확인하십시오.
 
@@ -94,7 +94,7 @@ HTTP는 세자리의 숫자 상태 코드를 응답의 일부로 전송합니다
 
 <img src="https://fastapi.tiangolo.com/img/tutorial/response-status-code/image02.png">
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 `from starlette import status` 역시 사용할 수 있습니다.
 
index b713c89751b314f0bf37ee7f37487e113c2875e6..77e94db720620497eff98c46540cfbf897fef944 100644 (file)
@@ -38,7 +38,7 @@ Pydantic v1에서 <a href="https://docs.pydantic.dev/1.10/usage/schema/#schema-c
 
 ////
 
-/// tip | "팁"
+/// tip | 
 
 JSON 스키마를 확장하고 여러분의 별도의 자체 데이터를 추가하기 위해 같은 기술을 사용할 수 있습니다.
 
@@ -46,7 +46,7 @@ JSON 스키마를 확장하고 여러분의 별도의 자체 데이터를 추가
 
 ///
 
-/// info | "정보"
+/// info | 정보
 
 (FastAPI 0.99.0부터 쓰이기 시작한) OpenAPI 3.1.0은 **JSON 스키마** 표준의 일부인 `examples`에 대한 지원을 추가했습니다.
 
@@ -143,7 +143,7 @@ Pydantic 모델과 같이 `Field()`를 사용할 때 추가적인 `examples`를
 
 ## 기술적 세부 사항
 
-/// tip | "팁"
+/// tip | 
 
 이미 **FastAPI**의 **0.99.0 혹은 그 이상** 버전을 사용하고 있다면, 이 세부 사항을 **스킵**해도 상관 없을 것입니다.
 
@@ -153,7 +153,7 @@ Pydantic 모델과 같이 `Field()`를 사용할 때 추가적인 `examples`를
 
 ///
 
-/// warning | "경고"
+/// warning | 경고
 
 표준 **JSON 스키마**와 **OpenAPI**에 대한 아주 기술적인 세부사항입니다.
 
@@ -177,7 +177,7 @@ OpenAPI는 또한 `example`과 `examples` 필드를 명세서의 다른 부분
     * `File()`
     * `Form()`
 
-/// info | "정보"
+/// info | 정보
 
 이 예전 OpenAPI-특화 `examples` 매개변수는 이제 FastAPI `0.103.0`부터 `openapi_examples`입니다.
 
@@ -193,7 +193,7 @@ OpenAPI는 또한 `example`과 `examples` 필드를 명세서의 다른 부분
 
 JSON 스키마의 새로운 `examples` 필드는 예제 속 **단순한 `list`**이며, (위에서 상술한 것처럼) OpenAPI의 다른 곳에 존재하는 dict으로 된 추가적인 메타데이터가 아닙니다.
 
-/// info | "정보"
+/// info | 정보
 
 더 쉽고 새로운 JSON 스키마와의 통합과 함께 OpenAPI 3.1.0가 배포되었지만, 잠시동안 자동 문서 생성을 제공하는 도구인 Swagger UI는 OpenAPI 3.1.0을 지원하지 않았습니다 (5.0.0 버전부터 지원합니다 🎉).
 
index 56f5792a74d7b0801a1e17e3aeacdd963795f3ba..cf550735afebfee305a2c8b0d71441bd922001db 100644 (file)
@@ -102,7 +102,7 @@ Pydantic 모델인 `User`로 `current_user`의 타입을 선언하는 것을 알
 
 이것은 모든 완료 및 타입 검사를 통해 함수 내부에서 우리를 도울 것입니다.
 
-/// tip | "팁"
+/// tip | 
 
 요청 본문도 Pydantic 모델로 선언된다는 것을 기억할 것입니다.
 
@@ -110,7 +110,7 @@ Pydantic 모델인 `User`로 `current_user`의 타입을 선언하는 것을 알
 
 ///
 
-/// check | "확인"
+/// check | 확인
 
 이 의존성 시스템이 설계된 방식은 모두 `User` 모델을 반환하는 다양한 의존성(다른 "의존적인")을 가질 수 있도록 합니다.
 
index 90a60d1939d6b320bed0fb15a1c36899c2d7cc54..af785f20610651642ade019f280cbd54ff157e38 100644 (file)
@@ -11,7 +11,7 @@
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "기술적 세부사항"
+/// note | 기술적 세부사항
 
 `from starlette.staticfiles import StaticFiles` 를 사용할 수도 있습니다.
 
index 4daad5e903c90ec372936e6732bf55387f449a44..3ea328dc2cbbd713746123478e61ba42caa69cfd 100644 (file)
@@ -229,7 +229,7 @@ Jeśli możesz mi w tym pomóc, **pomożesz mi utrzymać FastAPI** i zapewnisz 
 
 Dołącz do 👥 <a href="https://discord.gg/VQjSZaeJmf" class="external-link" target="_blank">serwera czatu na Discordzie</a> 👥 i spędzaj czas z innymi w społeczności FastAPI.
 
-/// tip | "Wskazówka"
+/// tip | Wskazówka
 
 Jeśli masz pytania, zadaj je w <a href="https://github.com/fastapi/fastapi/discussions/new?category=questions" class="external-link" target="_blank">Dyskusjach na GitHubie</a>, jest dużo większa szansa, że otrzymasz pomoc od [Ekspertów FastAPI](fastapi-people.md#fastapi-experts){.internal-link target=_blank}.
 
index 9466ca84d1bedf6dc7f98d2a72790410351851e7..8fa4c75ad91d7db82c4639da3b812326aa60fcf9 100644 (file)
@@ -135,7 +135,7 @@ Możesz go również użyć do automatycznego generowania kodu dla klientów, kt
 
 `FastAPI` jest klasą, która zapewnia wszystkie funkcjonalności Twojego API.
 
-/// note | "Szczegóły techniczne"
+/// note | Szczegóły techniczne
 
 `FastAPI` jest klasą, która dziedziczy bezpośrednio z `Starlette`.
 
@@ -249,7 +249,7 @@ Będziemy je również nazywali "**operacjami**".
 * ścieżki `/`
 * używając <abbr title="metoda HTTP GET">operacji <code>get</code></abbr>
 
-/// info | "`@decorator` Info"
+/// info | `@decorator` Info
 
 Składnia `@something` jest w Pythonie nazywana "dekoratorem".
 
index 46cf1efc3ecead6b44f8c93353e942cf6369786f..58e75ad9309ebb3f1a499717cc6883f383ad69fa 100644 (file)
@@ -1,6 +1,6 @@
 # Retornos Adicionais no OpenAPI
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Este é um tema bem avançado.
 
@@ -30,13 +30,13 @@ Por exemplo, para declarar um outro retorno com o status code `404` e um modelo
 {!../../docs_src/additional_responses/tutorial001.py!}
 ```
 
-/// note | "Nota"
+/// note | Nota
 
 Lembre-se que você deve retornar o `JSONResponse` diretamente.
 
 ///
 
-/// info | "Informação"
+/// info | Informação
 
 A chave `model` não é parte do OpenAPI.
 
@@ -181,13 +181,13 @@ Por exemplo, você pode adicionar um media type adicional de `image/png`, declar
 {!../../docs_src/additional_responses/tutorial002.py!}
 ```
 
-/// note | "Nota"
+/// note | Nota
 
 Note que você deve retornar a imagem utilizando um `FileResponse` diretamente.
 
 ///
 
-/// info | "Informação"
+/// info | Informação
 
 A menos que você especifique um media type diferente explicitamente em seu parâmetro `responses`, o FastAPI assumirá que o retorno possui o mesmo media type contido na classe principal de retorno (padrão `application/json`).
 
index 02bb4c0154071149557a153ce5314287b7ade512..5fe970d2a86edff3877ccd28dda5dcd8a9eb5096 100644 (file)
@@ -40,7 +40,7 @@ Para conseguir isso, importe `JSONResponse` e retorne o seu conteúdo diretament
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Faça uso da versão `Annotated` quando possível.
 
@@ -54,7 +54,7 @@ Faça uso da versão `Annotated` quando possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Faça uso da versão `Annotated` quando possível.
 
@@ -66,7 +66,7 @@ Faça uso da versão `Annotated` quando possível.
 
 ////
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Quando você retorna um `Response` diretamente, como no exemplo acima, ele será retornado diretamente.
 
@@ -76,7 +76,7 @@ Garanta que ele tenha toda informação que você deseja, e que os valores sejam
 
 ///
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Você também pode utilizar `from starlette.responses import JSONResponse`.
 
index a656390a466f99f60c3be23a965debe274007d97..52fe121f94861aa6f1fe4379a4f0955bc5fd4966 100644 (file)
@@ -36,7 +36,7 @@ Para fazer isso, nós declaramos o método `__call__`:
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -72,7 +72,7 @@ E agora, nós podemos utilizar o `__init__` para declarar os parâmetros da inst
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -108,7 +108,7 @@ Nós poderíamos criar uma instância desta classe com:
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -152,7 +152,7 @@ checker(q="somequery")
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -164,7 +164,7 @@ Prefira utilizar a versão `Annotated` se possível.
 
 ////
 
-/// tip | "Dica"
+/// tip | Dica
 
 Tudo isso parece não ser natural. E pode não estar muito claro ou aparentar ser útil ainda.
 
index c81d6124be85fe339c9a743f142524092204875d..8fae972980e5e35bf6794de3e99ede22a030e605 100644 (file)
@@ -64,7 +64,7 @@ O marcador `@pytest.mark.anyio` informa ao pytest que esta função de teste dev
 {!../../docs_src/async_tests/test_main.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Note que a função de teste é `async def` agora, no lugar de apenas `def` como quando estávamos utilizando o `TestClient` anteriormente.
 
@@ -84,13 +84,13 @@ response = client.get('/')
 
 ...que nós utilizamos para fazer as nossas requisições utilizando o `TestClient`.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Note que nós estamos utilizando async/await com o novo `AsyncClient` - a requisição é assíncrona.
 
 ///
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Se a sua aplicação depende dos eventos de vida útil (*lifespan*), o `AsyncClient` não acionará estes eventos. Para garantir que eles são acionados, utilize o `LifespanManager` do <a href="https://github.com/florimondmanca/asgi-lifespan#usage" class="external-link" target="_blank">florimondmanca/asgi-lifespan</a>.
 
@@ -100,7 +100,7 @@ Se a sua aplicação depende dos eventos de vida útil (*lifespan*), o `AsyncCli
 
 Como a função de teste agora é assíncrona, você pode chamar (e `esperar`) outras funções `async` além de enviar requisições para a sua aplicação FastAPI em seus testes, exatamente como você as chamaria em qualquer outro lugar do seu código.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você se deparar com um `RuntimeError: Task attached to a different loop` ao integrar funções assíncronas em seus testes (e.g. ao utilizar o <a href="https://stackoverflow.com/questions/41584243/runtimeerror-task-attached-to-a-different-loop" class="external-link" target="_blank">MotorClient do MongoDB</a>) Lembre-se de instanciar objetos que precisam de um loop de eventos (*event loop*) apenas em funções assíncronas, e.g. um *"callback"* `'@app.on_event("startup")`.
 
index 12fd83f3d9ecf5644eb2c3c73978f19756d18a76..6837c95426e1c4c431ae839555dd8a96bae3b1e8 100644 (file)
@@ -41,7 +41,7 @@ browser --> proxy
 proxy --> server
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 O IP `0.0.0.0` é comumente usado para significar que o programa escuta em todos os IPs disponíveis naquela máquina/servidor.
 
@@ -82,7 +82,7 @@ $ fastapi run main.py --root-path /api/v1
 
 Se você usar Hypercorn, ele também tem a opção `--root-path`.
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 A especificação ASGI define um `root_path` para esse caso de uso.
 
@@ -172,7 +172,7 @@ Então, crie um arquivo `traefik.toml` com:
 
 Isso diz ao Traefik para escutar na porta 9999 e usar outro arquivo `routes.toml`.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Estamos usando a porta 9999 em vez da porta padrão HTTP 80 para que você não precise executá-lo com privilégios de administrador (`sudo`).
 
@@ -242,7 +242,7 @@ Agora, se você for ao URL com a porta para o Uvicorn: <a href="http://127.0.0.1
 }
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Perceba que, mesmo acessando em `http://127.0.0.1:8000/app`, ele mostra o `root_path` de `/api/v1`, retirado da opção `--root-path`.
 
@@ -289,7 +289,7 @@ Isso porque o FastAPI usa esse `root_path` para criar o `server` padrão no Open
 
 ## Servidores adicionais
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Este é um caso de uso mais avançado. Sinta-se à vontade para pular.
 
@@ -330,7 +330,7 @@ Gerará um OpenAPI schema como:
 }
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Perceba o servidor gerado automaticamente com um valor `url` de `/api/v1`, retirado do `root_path`.
 
@@ -340,7 +340,7 @@ Na interface de documentação em <a href="http://127.0.0.1:9999/api/v1/docs" cl
 
 <img src="/img/tutorial/behind-a-proxy/image03.png">
 
-/// tip | "Dica"
+/// tip | Dica
 
 A interface de documentação interagirá com o servidor que você selecionar.
 
index 02f5b6d2b7d86af20195e67fddacbdcb52a7bd4c..783dbfc837f59bf6ef461b684946577c157f6f16 100644 (file)
@@ -39,7 +39,7 @@ Aqui nós estamos simulando a *inicialização* custosa do carregamento do model
 
 E então, logo após o `yield`, descarregaremos o modelo. Esse código será executado **após** a aplicação **terminar de lidar com as requisições**, pouco antes do *encerramento*. Isso poderia, por exemplo, liberar recursos como memória ou GPU.
 
-/// tip | "Dica"
+/// tip | Dica
 
 O `shutdown` aconteceria quando você estivesse **encerrando** a aplicação.
 
@@ -95,7 +95,7 @@ O parâmetro `lifespan` da aplicação `FastAPI` usa um **Gerenciador de Context
 
 ## Eventos alternativos (deprecados)
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 A maneira recomendada para lidar com a *inicialização* e o *encerramento* é usando o parâmetro `lifespan` da aplicação `FastAPI` como descrito acima.
 
@@ -133,13 +133,13 @@ Para adicionar uma função que deve ser executada quando a aplicação estiver
 
 Aqui, a função de manipulação de evento `shutdown` irá escrever uma linha de texto `"Application shutdown"` no arquivo `log.txt`.
 
-/// info | "Informação"
+/// info | Informação
 
 Na função `open()`, o `mode="a"` significa "acrescentar", então, a linha irá ser adicionada depois de qualquer coisa que esteja naquele arquivo, sem sobrescrever o conteúdo anterior.
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Perceba que nesse caso nós estamos usando a função padrão do Python `open()` que interage com um arquivo.
 
@@ -165,7 +165,7 @@ Só um detalhe técnico para nerds curiosos. 🤓
 
 Por baixo, na especificação técnica ASGI, essa é a parte do <a href="https://asgi.readthedocs.io/en/latest/specs/lifespan.html" class="external-link" target="_blank">Protocolo Lifespan</a>, e define eventos chamados `startup` e `shutdown`.
 
-/// info | "Informação"
+/// info | Informação
 
 Você pode ler mais sobre o manipulador `lifespan` do Starlette na <a href="https://www.starlette.io/lifespan/" class="external-link" target="_blank">Documentação do Lifespan Starlette</a>.
 
index 2569fc914b7ee5ff25bf0341a6f43c139d3e256c..22ba2bf4a461406fb5476c8aaa00e89ad4760f0d 100644 (file)
@@ -6,7 +6,7 @@ O [Tutorial - Guia de Usuário](../tutorial/index.md){.internal-link target=_bla
 
 Na próxima seção você verá outras opções, configurações, e recursos adicionais.
 
-/// tip | "Dica"
+/// tip | Dica
 
 As próximas seções **não são necessáriamente "avançadas"**
 
index 5a0226c74214f52b99249db31220065da7856f6a..344fe63713af898bdc41549843468573a9950413 100644 (file)
@@ -22,7 +22,7 @@ Com o **FastAPI**, utilizando o OpenAPI, você pode definir os nomes destes webh
 
 Isto pode facilitar bastante para os seus usuários **implementarem as APIs deles** para receber as requisições dos seus **webhooks**, eles podem inclusive ser capazes de gerar parte do código da API deles.
 
-/// info | "Informação"
+/// info | Informação
 
 Webhooks estão disponíveis a partir do OpenAPI 3.1.0, e possui suporte do FastAPI a partir da versão `0.99.0`.
 
@@ -38,7 +38,7 @@ Quando você cria uma aplicação com o **FastAPI**, existe um atributo chamado
 
 Os webhooks que você define aparecerão no esquema do **OpenAPI** e na **página de documentação** gerada automaticamente.
 
-/// info | "Informação"
+/// info | Informação
 
 O objeto `app.webhooks` é na verdade apenas um `APIRouter`, o mesmo tipo que você utilizaria ao estruturar a sua aplicação com diversos arquivos.
 
index d0821b5b2061ed98740b63c0022d8cb15e5cd7d0..cd8f39db3d9bb58a86c370b9347da46e28f173b2 100644 (file)
@@ -42,7 +42,7 @@ E também que você não esteja enviando nenhum dado que deveria ter sido filtra
 
 ### Mais informações
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Você também poderia usar `from starlette.responses import Response` ou `from starlette.responses import JSONResponse`.
 
index d1958e46b6c6beb857d277c7ab5afc341be3043b..98a7e0b6d155b129846bb53d3cdafdea191720ba 100644 (file)
@@ -28,7 +28,7 @@ Crie uma resposta conforme descrito em [Retornar uma resposta diretamente](respo
 {!../../docs_src/response_headers/tutorial001.py!}
 ```
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Você também pode usar `from starlette.responses import Response` ou `from starlette.responses import JSONResponse`.
 
index 26983a10385073c31bcb63c6e83e3c820e2cb88e..28c718f64afd2b149b4bdcaed8f4f0058bfcdcd8 100644 (file)
@@ -38,7 +38,7 @@ Então, quando você digitar o usuário e senha, o navegador os envia automatica
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -86,7 +86,7 @@ Então nós podemos utilizar o `secrets.compare_digest()` para garantir que o `c
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -179,7 +179,7 @@ Após detectar que as credenciais estão incorretas, retorne um `HTTPException`
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
index ae63f1c96d12e513ba965c52fb9a0dd1ef00cce0..6c7becb67abcec2417c750dfdce7279c7a5d1176 100644 (file)
@@ -4,7 +4,7 @@
 
 Existem algumas funcionalidades adicionais para lidar com segurança além das cobertas em [Tutorial - Guia de Usuário: Segurança](../../tutorial/security/index.md){.internal-link target=_blank}.
 
-/// tip | "Dica"
+/// tip | Dica
 
 As próximas seções **não são necessariamente "avançadas"**.
 
index fa4594c890887ce25444ea4e68e1b2e8ef9fca97..49fb7594432e28a52a6baf0db9295c0ce7351bc6 100644 (file)
@@ -10,7 +10,7 @@ Toda vez que você "se autentica com" Facebook, Google, GitHub, Microsoft, Twitt
 
 Nesta seção, você verá como gerenciar a autenticação e autorização com os mesmos escopos do OAuth2 em sua aplicação **FastAPI**.
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Isso é uma seção mais ou menos avançada. Se você está apenas começando, você pode pular.
 
@@ -308,7 +308,7 @@ E a função de dependência `get_current_active_user` também pode declarar sub
 
 Neste caso, ele requer o escopo `me` (poderia requerer mais de um escopo).
 
-/// note | "Nota"
+/// note | Nota
 
 Você não necessariamente precisa adicionar diferentes escopos em diferentes lugares.
 
@@ -771,7 +771,7 @@ O mais comum é o fluxo implícito.
 
 O mais seguro é o fluxo de código, mas ele é mais complexo para implementar, pois ele necessita mais passos. Como ele é mais complexo, muitos provedores terminam sugerindo o fluxo implícito.
 
-/// note | "Nota"
+/// note | Nota
 
 É comum que cada provedor de autenticação nomeie os seus fluxos de forma diferente, para torná-lo parte de sua marca.
 
index 88a5b940e97e4ee4f1c74e9dcbca9883d71a6cc1..2314fed91088dd994763a36a6f8ac5ec14997a07 100644 (file)
@@ -37,13 +37,13 @@ Além disso, em versões anteriores, o objeto `request` era passado como parte d
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Ao declarar `response_class=HTMLResponse`, a documentação entenderá que a resposta será HTML.
 
 ///
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Você também poderia usar `from starlette.templating import Jinja2Templates`.
 
index f978350a528b947d2074b10187f2f93ee5e609ca..94594e7e95e35f7ff64e37253c5f5d357270bf6e 100644 (file)
@@ -54,7 +54,7 @@ E então o **FastAPI** chamará a sobreposição no lugar da dependência origin
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -68,7 +68,7 @@ Prefira utilizar a versão `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -80,7 +80,7 @@ Prefira utilizar a versão `Annotated` se possível.
 
 ////
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você pode definir uma sobreposição de dependência para uma dependência que é utilizada em qualquer lugar da sua aplicação **FastAPI**.
 
@@ -96,7 +96,7 @@ E então você pode redefinir as suas sobreposições (removê-las) definindo o
 app.dependency_overrides = {}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você quer sobrepor uma dependência apenas para alguns testes, você pode definir a sobreposição no início do testes (dentro da função de teste) e reiniciá-la ao final (no final da função de teste).
 
index daa610df63c7495e703b03de3676ecad4cdc4634..99e1a6db4e8fe585e52973b9a8af7bce87cd2d13 100644 (file)
@@ -8,7 +8,7 @@ Para isso, você utiliza o `TestClient` dentro de uma instrução `with`, conect
 {!../../docs_src/app_testing/tutorial002.py!}
 ```
 
-/// note | "Nota"
+/// note | Nota
 
 Para mais detalhes, confira a documentação do Starlette para <a href="https://www.starlette.io/testclient/#testing-websocket-sessions" class="external-link" target="_blank">testar WebSockets</a>.
 
index c2114c214d2f95f8f154f4d5eeeb3c46759a7ac4..df7e018330e5987ba965cb6fe83ae12fbd88add4 100644 (file)
@@ -35,7 +35,7 @@ Para isso você precisa acessar a requisição diretamente.
 
 Ao declarar o parâmetro com o tipo sendo um `Request` em sua *função de operação de rota*, o **FastAPI** saberá como passar o `Request` neste parâmetro.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Note que neste caso, nós estamos declarando o parâmetro da rota ao lado do parâmetro da requisição.
 
@@ -49,7 +49,7 @@ Do mesmo jeito, você pode declarar qualquer outro parâmetro normalmente, e al
 
 Você pode ler mais sobre os detalhes do objeto <a href="https://www.starlette.io/requests/" class="external-link" target="_blank">`Request` no site da documentação oficial do Starlette.</a>.
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Você também pode utilizar `from starlette.requests import Request`.
 
index 2a2632bbc9fe73371efadcbebb8277a3b0d2b643..29c9693bba7a8288f2a46556318dae8073614889 100644 (file)
@@ -30,13 +30,13 @@ Ele é utilizado por muitas companhias incluindo Mozilla, Red Hat e Eventbrite.
 
 Ele foi um dos primeiros exemplos de **documentação automática de API**, e essa foi especificamente uma das primeiras idéias que inspirou "a busca por" **FastAPI**.
 
-/// note | "Nota"
+/// note | Nota
 
 Django REST Framework foi criado por Tom Christie. O mesmo criador de Starlette e Uvicorn, nos quais **FastAPI** é baseado.
 
 ///
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Ter uma documentação automática da API em interface web.
 
@@ -56,7 +56,7 @@ Esse desacoplamento de partes, e sendo um "microframework" que pode ser extendid
 
 Dada a simplicidade do Flask, parecia uma ótima opção para construção de APIs. A próxima coisa a procurar era um "Django REST Framework" para Flask.
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Ser um microframework. Fazer ele fácil para misturar e combinar com ferramentas e partes necessárias.
 
@@ -98,7 +98,7 @@ def read_url():
 
 Veja as similaridades em `requests.get(...)` e `@app.get(...)`.
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 * Ter uma API simples e intuitiva.
 * Utilizar nomes de métodos HTTP (operações) diretamente, de um jeito direto e intuitivo.
@@ -118,7 +118,7 @@ Em algum ponto, Swagger foi dado para a Fundação Linux, e foi renomeado OpenAP
 
 Isso acontece porquê quando alguém fala sobre a versão 2.0 é comum dizer "Swagger", e para a versão 3+, "OpenAPI".
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Adotar e usar um padrão aberto para especificações API, ao invés de algum esquema customizado.
 
@@ -147,7 +147,7 @@ Esses recursos são o que Marshmallow foi construído para fornecer. Ele é uma
 
 Mas ele foi criado antes da existência do _type hints_ do Python. Então, para definir todo o <abbr title="definição de como os dados devem ser formados">_schema_</abbr> você precisa utilizar específicas ferramentas e classes fornecidas pelo Marshmallow.
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Usar código para definir "schemas" que forneçam, automaticamente, tipos de dados e validação.
 
@@ -169,7 +169,7 @@ Webargs foi criado pelos mesmos desenvolvedores do Marshmallow.
 
 ///
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Ter validação automática de dados vindos de requisições.
 
@@ -199,7 +199,7 @@ APISpec foi criado pelos mesmos desenvolvedores do Marshmallow.
 
 ///
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Dar suporte a padrões abertos para APIs, OpenAPI.
 
@@ -231,7 +231,7 @@ Flask-apispec foi criado pelos mesmos desenvolvedores do Marshmallow.
 
 ///
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Gerar _schema_ OpenAPI automaticamente, a partir do mesmo código que define serialização e validação.
 
@@ -251,7 +251,7 @@ Mas como os dados TypeScript não são preservados após a compilação para o J
 
 Ele também não controla modelos aninhados muito bem. Então, se o corpo JSON na requisição for um objeto JSON que contém campos internos que contém objetos JSON aninhados, ele não consegue ser validado e documentado apropriadamente.
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Usar tipos Python para ter um ótimo suporte do editor.
 
@@ -263,7 +263,7 @@ Ter um sistema de injeção de dependência poderoso. Achar um jeito de minimiza
 
 Ele foi um dos primeiros frameworks Python extremamente rápido baseado em `asyncio`. Ele foi feito para ser muito similar ao Flask.
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Ele utiliza <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> ao invés do '_loop_' `asyncio` padrão do Python. É isso que deixa ele tão rápido.
 
@@ -271,7 +271,7 @@ Ele claramente inspirou Uvicorn e Starlette, que são atualmente mais rápidos q
 
 ///
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Achar um jeito de ter uma performance insana.
 
@@ -289,7 +289,7 @@ Ele é projetado para ter funções que recebem dois parâmetros, uma "requisiç
 
 Então, validação de dados, serialização e documentação tem que ser feitos no código, não automaticamente. Ou eles terão que ser implementados como um framework acima do Falcon, como o Hug. Essa mesma distinção acontece em outros frameworks que são inspirados pelo design do Falcon, tendo um objeto de requisição e um objeto de resposta como parâmetros.
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Achar jeitos de conseguir melhor performance.
 
@@ -315,7 +315,7 @@ O sistema de injeção de dependência exige pré-registro das dependências e a
 
 Rotas são declaradas em um único lugar, usando funções declaradas em outros lugares (ao invés de usar decoradores que possam ser colocados diretamente acima da função que controla o _endpoint_). Isso é mais perto de como o Django faz isso do que como Flask (e Starlette) faz. Ele separa no código coisas que são relativamente amarradas.
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Definir validações extras para tipos de dados usando valores "padrão" de atributos dos modelos. Isso melhora o suporte do editor, e não estava disponível no Pydantic antes.
 
@@ -343,7 +343,7 @@ Hug foi criado por Timothy Crosley, o mesmo criador do  <a href="https://github.
 
 ///
 
-/// check | "Idéias inspiradas para o **FastAPI**"
+/// check | Idéias inspiradas para o **FastAPI**
 
 Hug inspirou partes do APIStar, e foi uma das ferramentas que eu achei mais promissora, ao lado do APIStar.
 
@@ -387,7 +387,7 @@ APIStar foi criado por Tom Christie. O mesmo cara que criou:
 
 ///
 
-/// check | "**FastAPI** inspirado para"
+/// check | **FastAPI** inspirado para
 
 Existir.
 
@@ -411,7 +411,7 @@ Isso faz dele extremamente intuitivo.
 
 Ele é comparável ao Marshmallow. Embora ele seja mais rápido que Marshmallow em testes de performance. E ele é baseado nos mesmos Python _type hints_, o suporte ao editor é ótimo.
 
-/// check | "**FastAPI** usa isso para"
+/// check | **FastAPI** usa isso para
 
 Controlar toda a validação de dados, serialização de dados e modelo de documentação automática (baseado no JSON Schema).
 
@@ -447,7 +447,7 @@ Mas ele não fornece validação de dados automática, serialização e document
 
 Essa é uma das principais coisas que **FastAPI** adiciona no topo, tudo baseado em Python _type hints_ (usando Pydantic). Isso, mais o sistema de injeção de dependência, utilidades de segurança, geração de _schema_ OpenAPI, etc.
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 ASGI é um novo "padrão" sendo desenvolvido pelos membros do time central do Django. Ele ainda não está como "Padrão Python" (PEP), embora eles estejam em processo de fazer isso.
 
@@ -455,7 +455,7 @@ No entanto, ele já está sendo utilizado como "padrão" por diversas ferramenta
 
 ///
 
-/// check | "**FastAPI** usa isso para"
+/// check | **FastAPI** usa isso para
 
 Controlar todas as partes web centrais. Adiciona recursos no topo.
 
@@ -473,7 +473,7 @@ Ele não é um framework web, mas sim um servidor. Por exemplo, ele não fornece
 
 Ele é o servidor recomendado para Starlette e **FastAPI**.
 
-/// check | "**FastAPI** recomenda isso para"
+/// check | **FastAPI** recomenda isso para
 
 O principal servidor web para rodar aplicações **FastAPI**.
 
index 20513c3663d178c001b1629911313c484cbdeebf..8cf70d0b4729ead01a1998f5d86d82d5eaef87ed 100644 (file)
@@ -151,7 +151,7 @@ E ainda assim, você provavelmente não gostaria que o aplicativo permanecesse i
 
 Mas nos casos com erros realmente graves que travam o **processo** em execução, você vai querer um componente externo que seja responsável por **reiniciar** o processo, pelo menos algumas vezes...
 
-/// tip | "Dica"
+/// tip | Dica
 
 ...Embora se o aplicativo inteiro estiver **travando imediatamente**, provavelmente não faça sentido reiniciá-lo para sempre. Mas nesses casos, você provavelmente notará isso durante o desenvolvimento, ou pelo menos logo após a implantação.
 
@@ -239,7 +239,7 @@ Aqui estão algumas combinações e estratégias possíveis:
 * **Serviços de nuvem** que cuidam disso para você
     * O serviço de nuvem provavelmente **cuidará da replicação para você**. Ele possivelmente deixaria você definir **um processo para executar**, ou uma **imagem de contêiner** para usar, em qualquer caso, provavelmente seria **um único processo Uvicorn**, e o serviço de nuvem seria responsável por replicá-lo.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Não se preocupe se alguns desses itens sobre **contêineres**, Docker ou Kubernetes ainda não fizerem muito sentido.
 
@@ -261,7 +261,7 @@ E você terá que se certificar de que é um único processo executando essas et
 
 Claro, há alguns casos em que não há problema em executar as etapas anteriores várias vezes; nesse caso, é muito mais fácil de lidar.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Além disso, tenha em mente que, dependendo da sua configuração, em alguns casos você **pode nem precisar de nenhuma etapa anterior** antes de iniciar sua aplicação.
 
@@ -279,7 +279,7 @@ Aqui estão algumas ideias possíveis:
 * Um script bash que roda os passos anteriores e então inicia seu aplicativo
     * Você ainda precisaria de uma maneira de iniciar/reiniciar *aquele* script bash, detectar erros, etc.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Darei exemplos mais concretos de como fazer isso com contêineres em um capítulo futuro: [FastAPI em contêineres - Docker](docker.md){.internal-link target=_blank}.
 
index df93bac2c4707a68669d69ef55c2ec79eefc42fc..cf18bb15325a8e18f6f49679750f86aca8dd9cec 100644 (file)
@@ -4,7 +4,7 @@ Ao fazer o deploy de aplicações FastAPI uma abordagem comum é construir uma *
 
 Usando contêineres Linux você tem diversas vantagens incluindo **segurança**, **replicabilidade**, **simplicidade**, entre outras.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Está com pressa e já sabe dessas coisas? Pode ir direto para [`Dockerfile` abaixo 👇](#construindo-uma-imagem-docker-para-fastapi).
 
index 6ccc875fd4180a4c5059322d19a23637a4a7fb3e..9a13977ec4a3182dc6d125079aaa7a49060ebde2 100644 (file)
@@ -4,7 +4,7 @@
 
 Mas é bem mais complexo do que isso.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você está com pressa ou não se importa, continue com as seções seguintes para instruções passo a passo para configurar tudo com diferentes técnicas.
 
index 9eff3daaa5254ccce81f71e57c956a102768db95..237f4f8b946ec0d8add40d55020a1342191eeec4 100644 (file)
@@ -102,7 +102,7 @@ $ pip install "uvicorn[standard]"
 
 Um processo semelhante se aplicaria a qualquer outro programa de servidor ASGI.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Adicionando o `standard`, o Uvicorn instalará e usará algumas dependências extras recomendadas.
 
@@ -126,7 +126,7 @@ $ uvicorn main:app --host 0.0.0.0 --port 80
 
 </div>
 
-/// note | "Nota"
+/// note | Nota
 
 O comando `uvicorn main:app` refere-se a:
 
@@ -143,7 +143,7 @@ from main import app
 
 Cada programa de servidor ASGI alternativo teria um comando semelhante, você pode ler mais na documentação respectiva.
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Uvicorn e outros servidores suportam a opção `--reload` que é útil durante o desenvolvimento.
 
index 0d6cd5b3985b792f11c4b0107403b15467ac7bd1..63eda56b4e47c45dde3added7881486ab55d7ba5 100644 (file)
@@ -17,7 +17,7 @@ Como você viu no capítulo anterior sobre [Conceitos de implantação](concepts
 
 Aqui mostrarei como usar o **Uvicorn** com **processos de trabalho** usando o comando `fastapi` ou o comando `uvicorn` diretamente.
 
-/// info | "Informação"
+/// info | Informação
 
 Se você estiver usando contêineres, por exemplo com Docker ou Kubernetes, falarei mais sobre isso no próximo capítulo: [FastAPI em contêineres - Docker](docker.md){.internal-link target=_blank}.
 
index 79243a0146e76bf3b96c1465883aea83b0f5693a..323ddbd4500661efb38cd1dc2db0fb57860c159a 100644 (file)
@@ -42,7 +42,7 @@ Seguindo as convenções de controle de versão semântica, qualquer versão aba
 
 FastAPI também segue a convenção de que qualquer alteração de versão "PATCH" é para correção de bugs e alterações não significativas.
 
-/// tip | "Dica"
+/// tip | Dica
 
 O "PATCH" é o último número, por exemplo, em `0.2.3`, a versão PATCH é `3`.
 
@@ -56,7 +56,7 @@ fastapi>=0.45.0,<0.46.0
 
 Mudanças significativas e novos recursos são adicionados em versões "MINOR".
 
-/// tip | "Dica"
+/// tip | Dica
 
 O "MINOR" é o número que está no meio, por exemplo, em `0.2.3`, a versão MINOR é `2`.
 
index 360d1c496bd491e701f4a2203576743e7568a2a4..432f78af04b63d7443ecae7f2ba17f998c98435a 100644 (file)
@@ -1,6 +1,6 @@
 # Variáveis de Ambiente
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você já sabe o que são "variáveis de ambiente" e como usá-las, pode pular esta seção.
 
@@ -63,7 +63,7 @@ name = os.getenv("MY_NAME", "World")
 print(f"Hello {name} from Python")
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 O segundo argumento para <a href="https://docs.python.org/3.8/library/os.html#os.getenv" class="external-link" target="_blank">`os.getenv()`</a> é o valor padrão a ser retornado.
 
@@ -151,7 +151,7 @@ Hello World from Python
 
 </div>
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você pode ler mais sobre isso em <a href="https://12factor.net/config" class="external-link" target="_blank">The Twelve-Factor App: Config</a>.
 
index 61eeac0dcf023421bf65b452bf5aecff5863bcaf..3d6e1f9d2e51a15b6b921ebea3365e4adfb8532b 100644 (file)
@@ -109,7 +109,7 @@ Assim podendo tentar ajudar a resolver essas questões.
 Entre no 👥 <a href="https://discord.gg/VQjSZaeJmf" class="external-link" target="_blank">server de conversa do Discord</a> 👥 e conheça novas pessoas da comunidade
 do FastAPI.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Para perguntas, pergunte nas <a href="https://github.com/fastapi/fastapi/issues/new/choose" class="external-link" target="_blank">questões do GitHub</a>, lá tem um chance maior de você ser ajudado sobre o FastAPI [FastAPI Experts](fastapi-people.md#especialistas){.internal-link target=_blank}.
 
index 2cfd790c5867cc3daf9760758be7932708612514..250135e237293cd137db64920d9cb7ee5801b22f 100644 (file)
@@ -4,7 +4,7 @@ Como o **FastAPI** é baseado no padrão **ASGI**, é muito fácil integrar qual
 
 Você pode combinar *operações de rota* normais do FastAPI com GraphQL na mesma aplicação.
 
-/// tip | "Dica"
+/// tip | Dica
 
 **GraphQL** resolve alguns casos de uso muito específicos.
 
@@ -49,7 +49,7 @@ Versões anteriores do Starlette incluiam uma classe `GraphQLApp` para integrar
 
 Ela foi descontinuada do Starlette, mas se você tem código que a utilizava, você pode facilmente **migrar** para <a href="https://github.com/ciscorn/starlette-graphene3" class="external-link" target="_blank">starlette-graphene3</a>, que cobre o mesmo caso de uso e tem uma **interface quase idêntica**.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você precisa de GraphQL, eu ainda recomendaria que você desse uma olhada no <a href="https://strawberry.rocks/" class="external-link" target="_blank">Strawberry</a>, pois ele é baseado em type annotations em vez de classes e tipos personalizados.
 
index fcc30961f86f27d31e119b452f7c952316d40558..a094005fd714cdb260072e58c49ad129489fdb8c 100644 (file)
@@ -4,7 +4,7 @@ Se você está construindo uma aplicação ou uma API web, é raro que você pos
 
 **FastAPI** oferece uma ferramenta conveniente para estruturar sua aplicação, mantendo toda a flexibilidade.
 
-/// info | "Informação"
+/// info | Informação
 
 Se você vem do Flask, isso seria o equivalente aos Blueprints do Flask.
 
@@ -29,7 +29,7 @@ Digamos que você tenha uma estrutura de arquivos como esta:
 │       └── admin.py
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Existem vários arquivos `__init__.py` presentes em cada diretório ou subdiretório.
 
@@ -105,7 +105,7 @@ Todas as mesmas opções são suportadas.
 
 Todos os mesmos `parameters`, `responses`, `dependencies`, `tags`, etc.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Neste exemplo, a variável é chamada de `router`, mas você pode nomeá-la como quiser.
 
@@ -139,7 +139,7 @@ Agora usaremos uma dependência simples para ler um cabeçalho `X-Token` persona
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira usar a versão `Annotated` se possível.
 
@@ -151,7 +151,7 @@ Prefira usar a versão `Annotated` se possível.
 
 ////
 
-/// tip | "Dica"
+/// tip | Dica
 
 Estamos usando um cabeçalho inventado para simplificar este exemplo.
 
@@ -201,7 +201,7 @@ Também podemos adicionar uma lista de `tags` e `responses` extras que serão ap
 
 E podemos adicionar uma lista de `dependencies` que serão adicionadas a todas as *operações de rota* no roteador e serão executadas/resolvidas para cada solicitação feita a elas.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Observe que, assim como [dependências em *decoradores de operação de rota*](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank}, nenhum valor será passado para sua *função de operação de rota*.
 
@@ -222,7 +222,7 @@ O resultado final é que os caminhos dos itens agora são:
     * As dependências do roteador são executadas primeiro, depois as [`dependencies` no decorador](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank} e, em seguida, as dependências de parâmetros normais.
     * Você também pode adicionar [dependências de `Segurança` com `scopes`](../advanced/security/oauth2-scopes.md){.internal-link target=_blank}.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Ter `dependências` no `APIRouter` pode ser usado, por exemplo, para exigir autenticação para um grupo inteiro de *operações de rota*. Mesmo que as dependências não sejam adicionadas individualmente a cada uma delas.
 
@@ -248,7 +248,7 @@ Então usamos uma importação relativa com `..` para as dependências:
 
 #### Como funcionam as importações relativas
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você sabe perfeitamente como funcionam as importações, continue para a próxima seção abaixo.
 
@@ -319,7 +319,7 @@ Mas ainda podemos adicionar _mais_ `tags` que serão aplicadas a uma *operação
 {!../../docs_src/bigger_applications/app/routers/items.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Esta última operação de caminho terá a combinação de tags: `["items", "custom"]`.
 
@@ -381,7 +381,7 @@ Também poderíamos importá-los como:
 from app.routers import items, users
 ```
 
-/// info | "Informação"
+/// info | Informação
 
 A primeira versão é uma "importação relativa":
 
@@ -428,7 +428,7 @@ Agora, vamos incluir os `roteadores` dos submódulos `usuários` e `itens`:
 {!../../docs_src/bigger_applications/app/main.py!}
 ```
 
-/// info | "Informação"
+/// info | Informação
 
 `users.router` contém o `APIRouter` dentro do arquivo `app/routers/users.py`.
 
@@ -440,7 +440,7 @@ Com `app.include_router()` podemos adicionar cada `APIRouter` ao aplicativo prin
 
 Ele incluirá todas as rotas daquele roteador como parte dele.
 
-/// note | "Detalhe Técnico"
+/// note | Detalhe Técnico
 
 Na verdade, ele criará internamente uma *operação de rota* para cada *operação de rota* que foi declarada no `APIRouter`.
 
@@ -503,7 +503,7 @@ Aqui fazemos isso... só para mostrar que podemos 🤷:
 
 e funcionará corretamente, junto com todas as outras *operações de rota* adicionadas com `app.include_router()`.
 
-/// info | "Detalhes Técnicos"
+/// info | Detalhes Técnicos
 
 **Observação**: este é um detalhe muito técnico que você provavelmente pode **simplesmente pular**.
 
index ab9377fdb26989cd6d52f164dc561624d22aedb3..ac0b85ab5f91c9355121bb28754c7b631dccdf21 100644 (file)
@@ -10,7 +10,7 @@ Primeiro, você tem que importá-lo:
 {!../../docs_src/body_fields/tutorial001.py!}
 ```
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Note que `Field` é importado diretamente do `pydantic`, não do `fastapi` como todo o resto (`Query`, `Path`, `Body`, etc).
 
@@ -26,7 +26,7 @@ Você pode então utilizar `Field` com atributos do modelo:
 
 `Field` funciona da mesma forma que `Query`, `Path` e `Body`, ele possui todos os mesmos parâmetros, etc.
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Na realidade, `Query`, `Path` e outros que você verá em seguida, criam objetos de subclasses de uma classe `Param` comum, que é ela mesma uma subclasse da classe `FieldInfo` do Pydantic.
 
@@ -38,7 +38,7 @@ Lembre-se que quando você importa `Query`, `Path`, e outros de `fastapi`, esse
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Note como cada atributo do modelo com um tipo, valor padrão e `Field` possuem a mesma estrutura que parâmetros de *funções de operações de rota*, com `Field` ao invés de `Path`, `Query` e `Body`.
 
index 400813a7b94c8c2f56fae41dfa1767c3c05ec05a..ad4931b11f2adbc8cc2c322be06875933ebc6e06 100644 (file)
@@ -24,7 +24,7 @@ E você também pode declarar parâmetros de corpo como opcionais, definindo o v
 
 ////
 
-/// note | "Nota"
+/// note | Nota
 
 Repare que, neste caso, o `item` que seria capturado a partir do corpo é opcional. Visto que ele possui `None` como valor padrão.
 
@@ -80,7 +80,7 @@ Então, ele usará o nome dos parâmetros como chaves (nome dos campos) no corpo
 }
 ```
 
-/// note | "Nota"
+/// note | Nota
 
 Repare que mesmo que o `item` esteja declarado da mesma maneira que antes, agora é esperado que ele esteja dentro do corpo com uma chave `item`.
 
@@ -170,7 +170,7 @@ Por exemplo:
 
 ////
 
-/// info | "Informação"
+/// info | Informação
 
 `Body` também possui todas as validações adicionais e metadados de parâmetros como em `Query`,`Path` e outras que você verá depois.
 
index 3aa79d563f5a33b11d7e128b764e63c2c64ea1e6..bbe72a74455bc1e27641ab1cc56c6448659ecbd6 100644 (file)
@@ -165,7 +165,7 @@ Isso vai esperar(converter, validar, documentar, etc) um corpo JSON tal qual:
 }
 ```
 
-/// info | "informação"
+/// info | informação
 
 Note como o campo `images` agora tem uma lista de objetos de image.
 
@@ -179,7 +179,7 @@ Você pode definir modelos profundamente aninhados de forma arbitrária:
 {!../../docs_src/body_nested_models/tutorial007.py!}
 ```
 
-/// info | "informação"
+/// info | informação
 
 Note como `Offer` tem uma lista de `Item`s, que por sua vez possui opcionalmente uma lista `Image`s
 
@@ -232,7 +232,7 @@ Neste caso, você aceitaria qualquer `dict`, desde que tenha chaves` int` com va
 {!../../docs_src/body_nested_models/tutorial009.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Leve em condideração que o JSON só suporta `str` como chaves.
 
index 429e4fd5ac6ea62eaa78879bd03d8b9ea4612322..f3a1fda75c73634d27be8094d6a449023994d719 100644 (file)
@@ -8,7 +8,7 @@ Sua API quase sempre irá enviar um corpo na **resposta**. Mas os clientes não
 
 Para declarar um corpo da **requisição**, você utiliza os modelos do <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> com todos os seus poderes e benefícios.
 
-/// info | "Informação"
+/// info | Informação
 
 Para enviar dados, você deve usar utilizar um dos métodos: `POST` (Mais comum), `PUT`, `DELETE` ou `PATCH`.
 
@@ -113,7 +113,7 @@ Mas você terá o mesmo suporte do editor no <a href="https://www.jetbrains.com/
 
 <img src="/img/tutorial/body/image05.png">
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você utiliza o <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> como editor, você pode utilizar o <a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Plugin do Pydantic para o PyCharm </a>.
 
@@ -161,7 +161,7 @@ Os parâmetros da função serão reconhecidos conforme abaixo:
 * Se o parâmetro é de um **tipo único** (como `int`, `float`, `str`, `bool`, etc) será interpretado como um parâmetro de **consulta**.
 * Se o parâmetro é declarado como um **modelo Pydantic**, será interpretado como o **corpo** da requisição.
 
-/// note | "Observação"
+/// note | Observação
 
 O FastAPI saberá que o valor de `q` não é obrigatório por causa do valor padrão `= None`.
 
index 16c4e9bf5dca1819de99908ada51db92be13b5e6..326101bd27449d3e1f11964472d7e320bb32ff0f 100644 (file)
@@ -78,7 +78,7 @@ Qualquer solicitação com um cabeçalho `Origin`. Neste caso, o middleware pass
 
 Para mais informações <abbr title="Cross-Origin Resource Sharing">CORS</abbr>, acesse <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS documentation</a>.
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Você também pode usar `from starlette.middleware.cors import CORSMiddleware`.
 
index 6bac7eb85e451f4799a3ba25411edec94089cfc5..fca16298882f7f9feeb73f06f23b08cc27671ef0 100644 (file)
@@ -74,7 +74,7 @@ Então, a linha:
 
 não será executada.
 
-/// info | "Informação"
+/// info | Informação
 
 Para mais informações, consulte <a href="https://docs.python.org/3/library/__main__.html" class="external-link" target="_blank">a documentação oficial do Python</a>.
 
index 179bfefb52209e368e85258ab57cc47b43540706..fcf71d08cdc18903a60738782139d447a98b7c25 100644 (file)
@@ -32,7 +32,7 @@ No exemplo anterior, nós retornávamos um `dict` da nossa dependência ("injet
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -46,7 +46,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -145,7 +145,7 @@ Então, podemos mudar o "injetável" na dependência `common_parameters` acima p
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -159,7 +159,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -199,7 +199,7 @@ Observe o método `__init__` usado para criar uma instância da classe:
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -213,7 +213,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -253,7 +253,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -267,7 +267,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -319,7 +319,7 @@ Agora você pode declarar sua dependência utilizando essa classe.
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -333,7 +333,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -361,7 +361,7 @@ commons: Annotated[CommonQueryParams, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -397,7 +397,7 @@ commons: Annotated[CommonQueryParams, ...
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -423,7 +423,7 @@ commons: Annotated[Any, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -463,7 +463,7 @@ commons = Depends(CommonQueryParams)
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -477,7 +477,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -507,7 +507,7 @@ commons: Annotated[CommonQueryParams, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -535,7 +535,7 @@ commons: Annotated[CommonQueryParams, Depends(CommonQueryParams)]
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -559,7 +559,7 @@ commons: Annotated[CommonQueryParams, Depends()]
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -601,7 +601,7 @@ O mesmo exemplo ficaria então dessa forma:
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -615,7 +615,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -629,7 +629,7 @@ Utilize a versão com `Annotated` se possível.
 
 ...e o **FastAPI** saberá o que fazer.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se isso parece mais confuso do que útil, não utilize, você não *precisa* disso.
 
index 7d70869456fb4f7e4a1282e22cd96d8662beec69..89c34855ee7b3e3674d1dda4150f40cbdcad59cd 100644 (file)
@@ -32,7 +32,7 @@ Ele deve ser uma lista de `Depends()`:
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível
 
@@ -46,7 +46,7 @@ Utilize a versão com `Annotated` se possível
 
 Essas dependências serão executadas/resolvidas da mesma forma que dependências comuns. Mas o valor delas (se existir algum) não será passado para a sua *função de operação de rota*.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Alguns editores de texto checam parâmetros de funções não utilizados, e os mostram como erros.
 
@@ -56,7 +56,7 @@ Isso também pode ser útil para evitar confundir novos desenvolvedores que ao v
 
 ///
 
-/// info | "Informação"
+/// info | Informação
 
 Neste exemplo utilizamos cabeçalhos personalizados inventados `X-Keys` e `X-Token`.
 
@@ -90,7 +90,7 @@ Dependências podem declarar requisitos de requisições (como cabeçalhos) ou o
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível
 
@@ -124,7 +124,7 @@ Essas dependências podem levantar exceções, da mesma forma que dependências
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível
 
@@ -160,7 +160,7 @@ Então, você pode reutilizar uma dependência comum (que retorna um valor) que
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 
 
index d90bebe397bb6945ed9a3f57847bd20ef2370576..90c1e02e0eb97a128dfdafe90e2640df7d3f4903 100644 (file)
@@ -4,13 +4,13 @@ O FastAPI possui suporte para dependências que realizam <abbr title='também ch
 
 Para fazer isso, utilize `yield` em vez de `return`, e escreva os passos extras (código) depois.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Garanta que `yield` é utilizado apenas uma vez.
 
 ///
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Qualquer função que possa ser utilizada com:
 
@@ -45,7 +45,7 @@ O código após o `yield` é executado após a resposta ser entregue:
 {!../../docs_src/dependencies/tutorial007.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você pode usar funções assíncronas (`async`) ou funções comuns.
 
@@ -93,7 +93,7 @@ Por exemplo, `dependency_c` pode depender de `dependency_b`, e `dependency_b` de
 
 //// tab | python 3.8+ non-annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -129,7 +129,7 @@ E, por outro lado, `dependency_b` precisa que o valor de `dependency_a` (nomeada
 
 //// tab | python 3.8+ non-annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -149,7 +149,7 @@ Você pode ter qualquer combinação de dependências que você quiser.
 
 O **FastAPI** se encarrega de executá-las na ordem certa.
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Tudo isso funciona graças aos <a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">gerenciadores de contexto</a> do Python.
 
@@ -163,7 +163,7 @@ Você viu que dependências podem ser utilizadas com `yield` e podem incluir blo
 
 Da mesma forma, você pode lançar uma `httpexception` ou algo parecido no código de saída, após o `yield`
 
-/// tip | "Dica"
+/// tip | Dica
 
 Essa é uma técnica relativamente avançada, e na maioria dos casos você não precisa dela totalmente, já que você pode lançar exceções (incluindo `httpexception`) dentro do resto do código da sua aplicação, por exemplo, em uma *função de operação de rota*.
 
@@ -189,7 +189,7 @@ Mas ela existe para ser utilizada caso você precise. 🤓
 
 //// tab | python 3.8+ non-annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -225,7 +225,7 @@ Se você capturar uma exceção com `except` em uma dependência que utilize `yi
 
 //// tab | Python 3.8+ non-annotated
 
-/// tip | "dica"
+/// tip | dica
 
 utilize a versão com `Annotated` se possível.
 
@@ -263,7 +263,7 @@ Você pode relançar a mesma exceção utilizando `raise`:
 
 //// tab | python 3.8+ non-annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -316,7 +316,7 @@ participant tasks as Tarefas de Background
     end
 ```
 
-/// info | "Informação"
+/// info | Informação
 
 Apenas **uma resposta** será enviada para o cliente. Ela pode ser uma das respostas de erro, ou então a resposta da *operação de rota*.
 
@@ -324,7 +324,7 @@ Após uma dessas respostas ser enviada, nenhuma outra resposta pode ser enviada
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Esse diagrama mostra `HttpException`, mas você pode levantar qualquer outra exceção que você capture em uma dependência com `yield` ou um [Manipulador de exceções personalizado](../handling-errors.md#instalando-manipuladores-de-excecoes-customizados){.internal-link target=_blank}.
 
@@ -334,7 +334,7 @@ Se você lançar qualquer exceção, ela será passada para as dependências com
 
 ## Dependências com `yield`, `HTTPException`, `except` e Tarefas de Background
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Você provavelmente não precisa desses detalhes técnicos, você pode pular essa seção e continuar na próxima seção abaixo.
 
@@ -356,7 +356,7 @@ Isso foi implementado dessa forma principalmente para permitir que os mesmos obj
 
 Ainda assim, como isso exigiria esperar que a resposta navegasse pela rede enquanto mantia ativo um recurso desnecessário na dependência com yield (por exemplo, uma conexão com banco de dados), isso mudou na versão 0.106.0 do FastAPI.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Adicionalmente, uma tarefa de background é, normalmente, um conjunto de lógicas independentes que devem ser manipuladas separadamente, com seus próprios recursos (e.g. sua própria conexão com banco de dados).
 
@@ -390,7 +390,7 @@ Quando você cria uma dependência com `yield`, o **FastAPI** irá criar um gere
 
 ### Utilizando gerenciadores de contexto em dependências com `yield`
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Isso é uma ideia mais ou menos "avançada".
 
@@ -406,7 +406,7 @@ Você também pode usá-los dentro de dependências com `yield` do **FastAPI** a
 {!../../docs_src/dependencies/tutorial010.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Outra forma de criar um gerenciador de contexto é utilizando:
 
index 60a88940c25ce52af540327cf8491af3334cddeb..b0723d2243865baa097471619e8a9ed42207e936 100644 (file)
@@ -24,7 +24,7 @@ Nesse caso, elas serão aplicadas a todas as *operações de rota* da aplicaçã
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
index 2a63e7ab8ea40183288edf4bd8a2ea86ba32c62f..0f411ff1ee8bfe794e229db97793eea98c07fff5 100644 (file)
@@ -57,7 +57,7 @@ Ela é apenas uma função que pode receber os mesmos parâmetros de uma *funç
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -71,7 +71,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -101,7 +101,7 @@ Neste caso, a dependência espera por:
 
 E então retorna um `dict` contendo esses valores.
 
-/// info | "Informação"
+/// info | Informação
 
 FastAPI passou a suportar a notação `Annotated` (e começou a recomendá-la) na versão 0.95.0.
 
@@ -139,7 +139,7 @@ Certifique-se de [Atualizar a versão do FastAPI](../../deployment/versions.md#a
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -153,7 +153,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -195,7 +195,7 @@ Da mesma forma que você utiliza `Body`, `Query`, etc. Como parâmetros de sua *
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -209,7 +209,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -231,7 +231,7 @@ Você **não chama a função** diretamente (não adicione os parênteses no fin
 
 E essa função vai receber os parâmetros da mesma forma que uma *função de operação de rota*.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você verá quais outras "coisas", além de funções, podem ser usadas como dependências no próximo capítulo.
 
@@ -256,7 +256,7 @@ common_parameters --> read_users
 
 Assim, você escreve um código compartilhado apenas uma vez e o **FastAPI** se encarrega de chamá-lo em suas *operações de rota*.
 
-/// check | "Checando"
+/// check | Checando
 
 Perceba que você não precisa criar uma classe especial e enviar a dependência para algum outro lugar em que o **FastAPI** a "registre" ou realize qualquer operação similar.
 
@@ -300,7 +300,7 @@ Mas como estamos utilizando `Annotated`, podemos guardar esse valor `Annotated`
 
 ////
 
-/// tip | "Dica"
+/// tip | Dica
 
 Isso é apenas Python padrão, essa funcionalidade é chamada de "type alias", e na verdade não é específica ao **FastAPI**.
 
@@ -322,7 +322,7 @@ E você pode declarar dependências utilizando `async def` dentro de *funções
 
 Não faz diferença. O **FastAPI** sabe o que fazer.
 
-/// note | "Nota"
+/// note | Nota
 
 Caso você não conheça, veja em [Async: *"Com Pressa?"*](../../async.md#com-pressa){.internal-link target=_blank} a sessão acerca de `async` e `await` na documentação.
 
index b890fe79312f29ccc5e79d43ad556d60c5c818f9..4c0f42dbb9d5957ca7348472ad69a4fa29b44d8f 100644 (file)
@@ -36,7 +36,7 @@ Você pode criar uma primeira dependência (injetável) dessa forma:
 
 //// tab | Python 3.10 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -50,7 +50,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -96,7 +96,7 @@ Então, você pode criar uma outra função para uma dependência (um "injetáve
 
 //// tab | Python 3.10 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -110,7 +110,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -159,7 +159,7 @@ Então podemos utilizar a dependência com:
 
 //// tab | Python 3.10 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -173,7 +173,7 @@ Utilize a versão com `Annotated` se possível.
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -185,7 +185,7 @@ Utilize a versão com `Annotated` se possível.
 
 ////
 
-/// info | "Informação"
+/// info | Informação
 
 Perceba que nós estamos declarando apenas uma dependência na *função de operação de rota*, em `query_or_cookie_extractor`.
 
@@ -223,7 +223,7 @@ async def needy_dependency(fresh_value: Annotated[str, Depends(get_value, use_ca
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Utilize a versão com `Annotated` se possível.
 
@@ -244,7 +244,7 @@ Consiste apenas de funções que parecem idênticas a *funções de operação d
 
 Mas ainda assim, é bastante poderoso, e permite que você declare grafos (árvores) de dependências com uma profundidade arbitrária.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Tudo isso pode não parecer muito útil com esses exemplos.
 
index c8ce77e743e16cb9c86d234a057f4f03762cdfe4..d89c71fc86a5e5d88ab016ae303e72e4e72a65fa 100644 (file)
@@ -42,7 +42,7 @@ O resultado de chamar a função é algo que pode ser codificado com o padrão d
 
 A função não retorna um grande `str` contendo os dados no formato JSON (como uma string). Mas sim, retorna uma estrutura de dados padrão do Python (por exemplo, um `dict`) com valores e subvalores compatíveis com JSON.
 
-/// note | "Nota"
+/// note | Nota
 
 `jsonable_encoder` é realmente usado pelo **FastAPI** internamente para converter dados. Mas também é útil em muitos outros cenários.
 
index 4990b5984d5b1791675dbc83026acea386122734..f301c18b6e39498167f70198dc922cd7acd48b08 100644 (file)
@@ -24,7 +24,7 @@ $ uvicorn main:app --reload
 
 </div>
 
-/// note | "Nota"
+/// note | Nota
 
 O comando `uvicorn main:app` se refere a:
 
@@ -139,7 +139,7 @@ Você também pode usá-lo para gerar código automaticamente para clientes que
 
 `FastAPI` é uma classe Python que fornece todas as funcionalidades para sua API.
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 `FastAPI` é uma classe que herda diretamente de `Starlette`.
 
@@ -205,7 +205,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | "Informação"
+/// info | Informação
 
 Uma "rota" também é comumente chamada de "endpoint".
 
@@ -259,7 +259,7 @@ O `@app.get("/")` diz ao **FastAPI** que a função logo abaixo é responsável
 * a rota `/`
 * usando o  <abbr title="o método HTTP GET">operador <code>get</code></abbr>
 
-/// info | "`@decorador`"
+/// info | `@decorador`
 
 Essa sintaxe `@alguma_coisa` em Python é chamada de "decorador".
 
@@ -286,7 +286,7 @@ E os mais exóticos:
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você está livre para usar cada operação (método HTTP) como desejar.
 
@@ -324,7 +324,7 @@ Você também pode defini-la como uma função normal em vez de `async def`:
 {!../../docs_src/first_steps/tutorial003.py!}
 ```
 
-/// note | "Nota"
+/// note | Nota
 
 Se você não sabe a diferença, verifique o [Async: *"Com pressa?"*](../async.md#com-pressa){.internal-link target=_blank}.
 
index 4a042f2195b14b46ed5bacbead0954d2b0cc74cc..0d0abbd253d16494ddc4ff0940fe9b38dc666ac6 100644 (file)
@@ -66,7 +66,7 @@ Mas se o cliente faz uma requisição para `http://example.com/items/bar` (ou se
 }
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Quando você lançar um `HTTPException`, você pode passar qualquer valor convertível em JSON como parâmetro de `detail`, e não apenas `str`.
 
@@ -109,7 +109,7 @@ Dessa forma você receberá um erro "limpo", com o HTTP status code `418` e um J
 {"message": "Oops! yolo did something. There goes a rainbow..."}
 ```
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Você também pode usar `from starlette.requests import Request` and `from starlette.responses import JSONResponse`.
 
@@ -162,7 +162,7 @@ path -> item_id
 
 ### `RequestValidationError` vs `ValidationError`
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Você pode pular estes detalhes técnicos caso eles não sejam importantes para você neste momento.
 
@@ -186,7 +186,7 @@ Por exemplo, você pode querer retornar uma *response* em *plain text* ao invés
 {!../../docs_src/handling_errors/tutorial004.py!}
 ```
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Você pode usar `from starlette.responses import PlainTextResponse`.
 
index f7be2b0b75aadcf63242a03fe2678bb901dc0366..ac61d030595d3b589d326a85bc5b9a299cd77d39 100644 (file)
@@ -44,7 +44,7 @@ O primeiro valor é o valor padrão, você pode passar todas as validações adi
 
 ////
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 `Header` é uma classe "irmã" de `Path`, `Query` e `Cookie`. Ela também herda da mesma classe em comum `Param`.
 
@@ -90,7 +90,7 @@ Se por algum motivo você precisar desabilitar a conversão automática de subli
 
 ////
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Antes de definir `convert_underscores` como `False`, lembre-se de que alguns proxies e servidores HTTP não permitem o uso de cabeçalhos com sublinhados.
 
index a2f380284d14d4361e1850f835447f6e17a6e363..4e6293bb02bb5963268e3b2f4a76fa5c4c093ddd 100644 (file)
@@ -52,7 +52,7 @@ $ pip install "fastapi[all]"
 
 ...isso também inclui o `uvicorn`, que você pode usar como o servidor que rodará seu código.
 
-/// note | "Nota"
+/// note | Nota
 
 Você também pode instalar parte por parte.
 
index 35c61d5fc8cc69215516122c9acabfbdf491ee59..d1b7983569fa56bbed0a17a771a27b3301aba394 100644 (file)
@@ -11,7 +11,7 @@ Um "middleware" é uma função que manipula cada **requisição** antes de ser
 * Ele pode fazer algo com essa **resposta** ou executar qualquer código necessário.
 * Então ele retorna a **resposta**.
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Se você tiver dependências com `yield`, o código de saída será executado *depois* do middleware.
 
@@ -35,7 +35,7 @@ A função middleware recebe:
 {!../../docs_src/middleware/tutorial001.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Tenha em mente que cabeçalhos proprietários personalizados podem ser adicionados <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">usando o prefixo 'X-'</a>.
 
@@ -43,7 +43,7 @@ Mas se você tiver cabeçalhos personalizados desejando que um cliente em um nav
 
 ///
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Você também pode usar `from starlette.requests import Request`.
 
index 48753d7259b4f65e510d831da4470e71b5f5b900..5f3cc82fbcdc8bd33f65ce1ab2242fac308898eb 100644 (file)
@@ -2,7 +2,7 @@
 
 Existem vários parâmetros que você pode passar para o seu *decorador de operação de rota* para configurá-lo.
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Observe que esses parâmetros são passados diretamente para o *decorador de operação de rota*, não para a sua *função de operação de rota*.
 
@@ -42,7 +42,7 @@ Mas se você não se lembrar o que cada código numérico significa, pode usar a
 
 Esse código de status será usado na resposta e será adicionado ao esquema OpenAPI.
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Você também poderia usar `from starlette import status`.
 
@@ -185,7 +185,7 @@ Você pode especificar a descrição da resposta com o parâmetro `response_desc
 
 ////
 
-/// info | "Informação"
+/// info | Informação
 
 Note que `response_description` se refere especificamente à resposta, a `description` se refere à *operação de rota* em geral.
 
index 28c55482f7ff65c1b71df030e059bf01f66c181f..3361f86c5359ad12cdf61338c55317328f8d66fd 100644 (file)
@@ -44,7 +44,7 @@ Por exemplo para declarar um valor de metadado `title` para o parâmetro de rota
 
 ////
 
-/// note | "Nota"
+/// note | Nota
 
 Um parâmetro de rota é sempre obrigatório, como se fizesse parte da rota.
 
@@ -132,7 +132,7 @@ E você também pode declarar validações numéricas:
 * `lt`: menor que (`l`ess `t`han)
 * `le`: menor que ou igual (`l`ess than or `e`qual)
 
-/// info | "Informação"
+/// info | Informação
 
 `Query`, `Path` e outras classes que você verá a frente são subclasses de uma classe comum `Param`.
 
@@ -140,7 +140,7 @@ Todas elas compartilham os mesmos parâmetros para validação adicional e metad
 
 ///
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Quando você importa `Query`, `Path` e outras de `fastapi`, elas são na verdade funções.
 
index a68354a1bc52e057973f62c581c3ce1134f0f7e4..64f8a02535b1e407aee05a96f29dfb30064c1ede 100644 (file)
@@ -24,7 +24,7 @@ Você pode declarar o tipo de um parâmetro na função usando as anotações pa
 
 Nesse caso, `item_id` está sendo declarado como um `int`.
 
-/// check | "Verifique"
+/// check | Verifique
 
 
 
@@ -40,7 +40,7 @@ Se você rodar esse exemplo e abrir o seu navegador em <a href="http://127.0.0.1
 {"item_id":3}
 ```
 
-/// check | "Verifique"
+/// check | Verifique
 
 
 
@@ -73,7 +73,7 @@ devido ao parâmetro da rota `item_id` ter um valor `"foo"`, que não é um `int
 
 O mesmo erro apareceria se você tivesse fornecido um `float` ao invés de um `int`, como em: <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a>
 
-/// check | "Verifique"
+/// check | Verifique
 
 
 
@@ -91,7 +91,7 @@ Quando você abrir o seu navegador em <a href="http://127.0.0.1:8000/docs" class
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | "Verifique"
+/// check | Verifique
 
 
 
@@ -151,13 +151,13 @@ Assim, crie atributos de classe com valores fixos, que serão os valores válido
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// info | "informação"
+/// info | informação
 
 <a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">Enumerations (ou enums) estão disponíveis no Python</a> desde a versão 3.4.
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 
 
@@ -199,7 +199,7 @@ Você pode ter o valor exato de enumerate (um `str` nesse caso) usando `model_na
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 
 
@@ -258,7 +258,7 @@ Então, você poderia usar ele com:
 {!../../docs_src/path_params/tutorial004.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 
 
index e6dcf748e85e0021e82b4f633efaa53b6a06bbbb..2fa0eeba08be4f782752373fc6150b0f28ecf7fe 100644 (file)
@@ -10,7 +10,7 @@ Vamos utilizar essa aplicação como exemplo:
 
 O parâmetro de consulta `q` é do tipo `Union[str, None]`, o que significa que é do tipo `str` mas que também pode ser `None`, e de fato, o valor padrão é `None`, então o FastAPI saberá que não é obrigatório.
 
-/// note | "Observação"
+/// note | Observação
 
 O FastAPI saberá que o valor de `q` não é obrigatório por causa do valor padrão `= None`.
 
@@ -54,7 +54,7 @@ q: Union[str, None] = None
 
 Mas o declara explicitamente como um parâmetro de consulta.
 
-/// info | "Informação"
+/// info | Informação
 
 Tenha em mente que o FastAPI se preocupa com a parte:
 
@@ -118,7 +118,7 @@ Vamos dizer que você queira que o parâmetro de consulta `q` tenha um `min_leng
 {!../../docs_src/query_params_str_validations/tutorial005.py!}
 ```
 
-/// note | "Observação"
+/// note | Observação
 
 O parâmetro torna-se opcional quando possui um valor padrão.
 
@@ -150,7 +150,7 @@ Então, quando você precisa declarar um parâmetro obrigatório utilizando o `Q
 {!../../docs_src/query_params_str_validations/tutorial006.py!}
 ```
 
-/// info | "Informação"
+/// info | Informação
 
 Se você nunca viu os `...` antes: é um valor único especial, faz <a href="https://docs.python.org/3/library/constants.html#Ellipsis" class="external-link" target="_blank">parte do Python e é chamado "Ellipsis"</a>.
 
@@ -187,7 +187,7 @@ Assim, a resposta para essa URL seria:
 }
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Para declarar um parâmetro de consulta com o tipo `list`, como no exemplo acima, você precisa usar explicitamente o `Query`, caso contrário será interpretado como um corpo da requisição.
 
@@ -230,7 +230,7 @@ Você também pode utilizar o tipo `list` diretamente em vez de `List[str]`:
 {!../../docs_src/query_params_str_validations/tutorial013.py!}
 ```
 
-/// note | "Observação"
+/// note | Observação
 
 Tenha em mente que neste caso, o FastAPI não irá validar os conteúdos da lista.
 
@@ -244,7 +244,7 @@ Você pode adicionar mais informações sobre o parâmetro.
 
 Essa informações serão inclusas no esquema do OpenAPI e utilizado pela documentação interativa e ferramentas externas.
 
-/// note | "Observação"
+/// note | Observação
 
 Tenha em mente que cada ferramenta oferece diferentes níveis de suporte ao OpenAPI.
 
index 6e6699cd536098871366a75676982523102136cc..89b951de6028a2c80de323a84a4c027d2f4bacce 100644 (file)
@@ -81,7 +81,7 @@ Da mesma forma, você pode declarar parâmetros de consulta opcionais, definindo
 
 Nesse caso, o parâmetro da função `q` será opcional, e `None` será o padrão.
 
-/// check | "Verificar"
+/// check | Verificar
 
 Você também pode notar que o **FastAPI** é esperto o suficiente para perceber que o parâmetro da rota `item_id` é um parâmetro da rota, e `q` não é, portanto, `q` é o parâmetro de consulta.
 
@@ -239,7 +239,7 @@ Nesse caso, existem 3 parâmetros de consulta:
 * `skip`, um `int` com o valor padrão `0`.
 * `limit`, um `int` opcional.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você também poderia usar `Enum` da mesma forma que com [Path Parameters](path-params.md#valores-predefinidos){.internal-link target=_blank}.
 
index d230f1febedbecdcf96e8ddee79d81ec0556b9d0..c22c1c5133edbec0bde8979ee7774872beaff03b 100644 (file)
@@ -103,7 +103,7 @@ Quando você usa os métodos `async`, o **FastAPI** executa os métodos de arqui
 
 ///
 
-/// note | "Detalhes Técnicos do Starlette"
+/// note | Detalhes Técnicos do Starlette
 
 O `UploadFile` do ***FastAPI** herda diretamente do `UploadFile` do **Starlette** , mas adiciona algumas partes necessárias para torná-lo compatível com o **Pydantic** e as outras partes do FastAPI.
 
@@ -115,7 +115,7 @@ O jeito que os formulários HTML (`<form></form>`) enviam os dados para o servid
 
 **FastAPI** se certificará de ler esses dados do lugar certo, ao invés de JSON.
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Dados de formulários normalmente são codificados usando o "media type" (tipo de mídia) `application/x-www-form-urlencoded` quando não incluem arquivos.
 
@@ -157,7 +157,7 @@ Para usar isso, declare uma lista de `bytes` ou `UploadFile`:
 
 Você receberá, tal como declarado, uma `list` de `bytes` ou `UploadFile`.
 
-/// note | "Detalhes Técnicos"
+/// note | Detalhes Técnicos
 
 Você pode também pode usar `from starlette.responses import HTMLResponse`.
 
index 837e24c3420b733a030b66443b70125cc8c7a58c..7128a0ae21d40f0dabf924d05b178f7dc70f0d8f 100644 (file)
@@ -2,7 +2,7 @@
 
 Você pode utilizar **Modelos Pydantic** para declarar **campos de formulários** no FastAPI.
 
-/// info | "Informação"
+/// info | Informação
 
 Para utilizar formulários, instale primeiramente o <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
 
@@ -14,7 +14,7 @@ $ pip install python-multipart
 
 ///
 
-/// note | "Nota"
+/// note | Nota
 
 Isto é suportado desde a versão `0.113.0` do FastAPI. 🤓
 
@@ -42,7 +42,7 @@ Você precisa apenas declarar um **modelo Pydantic** com os campos que deseja re
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira utilizar a versão `Annotated` se possível.
 
@@ -68,7 +68,7 @@ Você pode verificar na UI de documentação em `/docs`:
 
 Em alguns casos de uso especiais (provavelmente não muito comum), você pode desejar **restringir** os campos do formulário para aceitar apenas os declarados no modelo Pydantic. E **proibir** qualquer campo **extra**.
 
-/// note | "Nota"
+/// note | Nota
 
 Isso é suportado deste a versão `0.114.0` do FastAPI. 🤓
 
index 29488b4f26ef7440f42768213cc8ec352116322f..77c099eb34b51177c84ec6a00edffa7d5fb4eb3c 100644 (file)
@@ -2,7 +2,7 @@
 
 Você pode definir arquivos e campos de formulário ao mesmo tempo usando `File` e `Form`.
 
-/// info | "Informação"
+/// info | Informação
 
 Para receber arquivos carregados e/ou dados de formulário, primeiro instale <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
 
@@ -28,7 +28,7 @@ Os arquivos e campos de formulário serão carregados como dados de formulário
 
 E você pode declarar alguns dos arquivos como `bytes` e alguns como `UploadFile`.
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Você pode declarar vários parâmetros `File` e `Form` em uma *operação de caminho*, mas não é possível declarar campos `Body` para receber como JSON, pois a requisição terá o corpo codificado usando `multipart/form-data` ao invés de `application/json`.
 
index 1e2faf269b8d293357ae4e754fef12ed68408728..367fca0729d62469c9796a8d6eb9a21016ec8b4f 100644 (file)
@@ -2,7 +2,7 @@
 
 Quando você precisar receber campos de formulário ao invés de JSON, você pode usar `Form`.
 
-/// info | "Informação"
+/// info | Informação
 
 Para usar formulários, primeiro instale <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
 
@@ -32,13 +32,13 @@ A <abbr title="especificação">spec</abbr> exige que os campos sejam exatamente
 
 Com `Form` você pode declarar os mesmos metadados e validação que com `Body` (e `Query`, `Path`, `Cookie`).
 
-/// info | "Informação"
+/// info | Informação
 
 `Form` é uma classe que herda diretamente de `Body`.
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Para declarar corpos de formulário, você precisa usar `Form` explicitamente, porque sem ele os parâmetros seriam interpretados como parâmetros de consulta ou parâmetros de corpo (JSON).
 
@@ -50,7 +50,7 @@ A forma como os formulários HTML (`<form></form>`) enviam os dados para o servi
 
 O **FastAPI** fará a leitura desses dados no lugar certo em vez de JSON.
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Os dados dos formulários são normalmente codificados usando o "tipo de mídia" `application/x-www-form-urlencoded`.
 
@@ -60,7 +60,7 @@ Se você quiser ler mais sobre essas codificações e campos de formulário, vá
 
 ///
 
-/// warning | "Aviso"
+/// warning | Aviso
 
 Você pode declarar vários parâmetros `Form` em uma *operação de caminho*, mas não pode declarar campos `Body` que espera receber como JSON, pois a solicitação terá o corpo codificado usando `application/x-www- form-urlencoded` em vez de `application/json`.
 
index bc4a2cd348634be2e32523c016194e02394d3511..2c8924925cac828dc315b321070f983ea1c874b0 100644 (file)
@@ -12,7 +12,7 @@ Da mesma forma que você pode especificar um modelo de resposta, você também p
 {!../../docs_src/response_status_code/tutorial001.py!}
 ```
 
-/// note | "Nota"
+/// note | Nota
 
 Observe que `status_code` é um parâmetro do método "decorador" (get, post, etc). Não da sua função de *operação de caminho*, como todos os parâmetros e corpo.
 
@@ -20,7 +20,7 @@ Observe que `status_code` é um parâmetro do método "decorador" (get, post, et
 
 O parâmetro `status_code` recebe um número com o código de status HTTP.
 
-/// info | "Informação"
+/// info | Informação
 
 `status_code` também pode receber um `IntEnum`, como o do Python <a href="https://docs.python.org/3/library/http.html#http.HTTPStatus" class="external-link" target="_blank">`http.HTTPStatus`</a>.
 
@@ -33,7 +33,7 @@ Dessa forma:
 
 <img src="/img/tutorial/response-status-code/image01.png">
 
-/// note | "Nota"
+/// note | Nota
 
 Alguns códigos de resposta (consulte a próxima seção) indicam que a resposta não possui um corpo.
 
@@ -43,7 +43,7 @@ O FastAPI sabe disso e produzirá documentos OpenAPI informando que não há cor
 
 ## Sobre os códigos de status HTTP
 
-/// note | "Nota"
+/// note | Nota
 
 Se você já sabe o que são códigos de status HTTP, pule para a próxima seção.
 
@@ -67,7 +67,7 @@ Resumidamente:
     * Para erros genéricos do cliente, você pode usar apenas `400`.
 * `500` e acima são para erros do servidor. Você quase nunca os usa diretamente. Quando algo der errado em alguma parte do código do seu aplicativo ou servidor, ele retornará automaticamente um desses códigos de status.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Para saber mais sobre cada código de status e qual código serve para quê, verifique o <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network">MDN</abbr> documentação sobre códigos de status HTTP</a>.
 
@@ -95,7 +95,7 @@ Eles são apenas uma conveniência, eles possuem o mesmo número, mas dessa form
 
 <img src="/img/tutorial/response-status-code/image02.png">
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Você também pode usar `from starlette import status`.
 
index 2d78e4ef1f222f0d4874c4711020e95e4c57502f..dd95d4c7dc63337d97843d60a3299cee50ff7479 100644 (file)
@@ -14,7 +14,7 @@ Você pode declarar um `example` para um modelo Pydantic usando `Config` e `sche
 
 Essas informações extras serão adicionadas como se encontram no **JSON Schema** de resposta desse modelo e serão usadas na documentação da API.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você pode usar a mesma técnica para estender o JSON Schema e adicionar suas próprias informações extras de forma personalizada.
 
@@ -32,7 +32,7 @@ Você pode usar isso para adicionar um `example` para cada campo:
 {!../../docs_src/schema_extra_example/tutorial002.py!}
 ```
 
-/// warning | "Atenção"
+/// warning | Atenção
 
 Lembre-se de que esses argumentos extras passados ​​não adicionarão nenhuma validação, apenas informações extras, para fins de documentação.
 
@@ -91,7 +91,7 @@ Com `examples` adicionado a `Body()`, os `/docs` vão ficar assim:
 
 ## Detalhes técnicos
 
-/// warning | "Atenção"
+/// warning | Atenção
 
 Esses são detalhes muito técnicos sobre os padrões **JSON Schema** e **OpenAPI**.
 
index 9fb94fe674b1e23bbbad91094de146cad5cede0b..02871c90a36963bcef76925e0ccbffee7497c84f 100644 (file)
@@ -25,7 +25,7 @@ Copie o exemplo em um arquivo `main.py`:
 
 ## Execute-o
 
-/// info | "informação"
+/// info | informação
 
 
 
@@ -57,7 +57,7 @@ Você verá algo deste tipo:
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | "Botão de Autorizar!"
+/// check | Botão de Autorizar!
 
 
 
@@ -71,7 +71,7 @@ E se você clicar, você terá um pequeno formulário de autorização para digi
 
 <img src="/img/tutorial/security/image02.png">
 
-/// note | "Nota"
+/// note | Nota
 
 
 
@@ -119,7 +119,7 @@ Então, vamos rever de um ponto de vista simplificado:
 
 Neste exemplo, nós vamos usar o **OAuth2** com o fluxo de **Senha**, usando um token **Bearer**. Fazemos isso usando a classe `OAuth2PasswordBearer`.
 
-/// info | "informação"
+/// info | informação
 
 
 
@@ -139,7 +139,7 @@ Quando nós criamos uma instância da classe `OAuth2PasswordBearer`, nós passam
 {!../../docs_src/security/tutorial001.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 
 
@@ -155,7 +155,7 @@ Esse parâmetro não cria um endpoint / *path operation*, mas declara que a URL
 
 Em breve também criaremos o atual path operation.
 
-/// info | "informação"
+/// info | informação
 
 
 
@@ -187,7 +187,7 @@ Esse dependência vai fornecer uma `str` que é atribuído ao parâmetro `token
 
 A **FastAPI** saberá que pode usar essa dependência para definir um "esquema de segurança" no esquema da OpenAPI (e na documentação da API automática).
 
-/// info | "Detalhes técnicos"
+/// info | Detalhes técnicos
 
 
 
index 2f23aa47ee08296e7e03a7fb57183fb96ffe0670..b4440ec0413e7a597f7b55f4a8536306234504cf 100644 (file)
@@ -32,7 +32,7 @@ Não é muito popular ou usado nos dias atuais.
 
 OAuth2 não especifica como criptografar a comunicação, ele espera que você tenha sua aplicação em um servidor HTTPS.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Na seção sobre **deployment** você irá ver como configurar HTTPS de modo gratuito, usando Traefik e Let’s Encrypt.
 
@@ -89,7 +89,7 @@ OpenAPI define os seguintes esquemas de segurança:
     * Essa descoberta automática é o que é definido na especificação OpenID Connect.
 
 
-/// tip | "Dica"
+/// tip | Dica
 
 Integração com outros provedores de autenticação/autorização como Google, Facebook, Twitter, GitHub, etc. é bem possível e relativamente fácil.
 
index 901fca1d21aab5897fa50da7ae1550e07e9c9de5..aba4b8221cd87eb4691779e6a92dc7edfff2c9bf 100644 (file)
@@ -11,7 +11,7 @@ Você pode servir arquivos estáticos automaticamente de um diretório usando `S
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Você também pode usar `from starlette.staticfiles import StaticFiles`.
 
index 4e28a43c09b66fc32ad53af3caf870094e74f0e5..4f8eaa2995b17c32b06ae88ad7743d3b85ec5fae 100644 (file)
@@ -8,7 +8,7 @@ Com ele, você pode usar o <a href="https://docs.pytest.org/" class="external-li
 
 ## Usando `TestClient`
 
-/// info | "Informação"
+/// info | Informação
 
 Para usar o `TestClient`, primeiro instale o <a href="https://www.python-httpx.org" class="external-link" target="_blank">`httpx`</a>.
 
@@ -34,7 +34,7 @@ Escreva instruções `assert` simples com as expressões Python padrão que voc
 {!../../docs_src/app_testing/tutorial001.py!}
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 Observe que as funções de teste são `def` normais, não `async def`.
 
@@ -44,7 +44,7 @@ Isso permite que você use `pytest` diretamente sem complicações.
 
 ///
 
-/// note | "Detalhes técnicos"
+/// note | Detalhes técnicos
 
 Você também pode usar `from starlette.testclient import TestClient`.
 
@@ -52,7 +52,7 @@ Você também pode usar `from starlette.testclient import TestClient`.
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você quiser chamar funções `async` em seus testes além de enviar solicitações ao seu aplicativo FastAPI (por exemplo, funções de banco de dados assíncronas), dê uma olhada em [Testes assíncronos](../advanced/async-tests.md){.internal-link target=_blank} no tutorial avançado.
 
@@ -152,7 +152,7 @@ Ambas as *operações de rotas* requerem um cabeçalho `X-Token`.
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira usar a versão `Annotated` se possível.
 
@@ -166,7 +166,7 @@ Prefira usar a versão `Annotated` se possível.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Dica"
+/// tip | Dica
 
 Prefira usar a versão `Annotated` se possível.
 
@@ -200,7 +200,7 @@ Por exemplo:
 
 Para mais informações sobre como passar dados para o backend (usando `httpx` ou `TestClient`), consulte a <a href="https://www.python-httpx.org" class="external-link" target="_blank">documentação do HTTPX</a>.
 
-/// info | "Informação"
+/// info | Informação
 
 Observe que o `TestClient` recebe dados que podem ser convertidos para JSON, não para modelos Pydantic.
 
index 863c8d65e6714559c1b9272ab27187e18c96e593..5fc1a88666250aeed061c7a278f7352e61c256b5 100644 (file)
@@ -2,13 +2,13 @@
 
 Ao trabalhar em projetos Python, você provavelmente deve usar um **ambiente virtual** (ou um mecanismo similar) para isolar os pacotes que você instala para cada projeto.
 
-/// info | "Informação"
+/// info | Informação
 
 Se você já sabe sobre ambientes virtuais, como criá-los e usá-los, talvez seja melhor pular esta seção. 🤓
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Um **ambiente virtual** é diferente de uma **variável de ambiente**.
 
@@ -18,7 +18,7 @@ Um **ambiente virtual** é um diretório com alguns arquivos.
 
 ///
 
-/// info | "Informação"
+/// info | Informação
 
 Esta página lhe ensinará como usar **ambientes virtuais** e como eles funcionam.
 
@@ -55,7 +55,7 @@ $ cd awesome-project
 
 Ao começar a trabalhar em um projeto Python **pela primeira vez**, crie um ambiente virtual **<abbr title="existem outras opções, esta é uma diretriz simples">dentro do seu projeto</abbr>**.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você só precisa fazer isso **uma vez por projeto**, não toda vez que trabalhar.
 
@@ -96,7 +96,7 @@ $ uv venv
 
 </div>
 
-/// tip | "Dica"
+/// tip | Dica
 
 Por padrão, `uv` criará um ambiente virtual em um diretório chamado `.venv`.
 
@@ -118,7 +118,7 @@ Você pode criar o ambiente virtual em um diretório diferente, mas há uma conv
 
 Ative o novo ambiente virtual para que qualquer comando Python que você executar ou pacote que você instalar o utilize.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Faça isso **toda vez** que iniciar uma **nova sessão de terminal** para trabalhar no projeto.
 
@@ -162,7 +162,7 @@ $ source .venv/Scripts/activate
 
 ////
 
-/// tip | "Dica"
+/// tip | Dica
 
 Toda vez que você instalar um **novo pacote** naquele ambiente, **ative** o ambiente novamente.
 
@@ -174,7 +174,7 @@ Isso garante que, se você usar um **programa de terminal (<abbr title="interfac
 
 Verifique se o ambiente virtual está ativo (o comando anterior funcionou).
 
-/// tip | "Dica"
+/// tip | Dica
 
 Isso é **opcional**, mas é uma boa maneira de **verificar** se tudo está funcionando conforme o esperado e se você está usando o ambiente virtual pretendido.
 
@@ -214,7 +214,7 @@ Se ele mostrar o binário `python` em `.venv\Scripts\python`, dentro do seu proj
 
 ## Atualizar `pip`
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você usar <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a>, você o usará para instalar coisas em vez do `pip`, então não precisará atualizar o `pip`. 😎
 
@@ -224,7 +224,7 @@ Se você estiver usando `pip` para instalar pacotes (ele vem por padrão com o P
 
 Muitos erros exóticos durante a instalação de um pacote são resolvidos apenas atualizando o `pip` primeiro.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Normalmente, você faria isso **uma vez**, logo após criar o ambiente virtual.
 
@@ -246,13 +246,13 @@ $ python -m pip install --upgrade pip
 
 Se você estiver usando **Git** (você deveria), adicione um arquivo `.gitignore` para excluir tudo em seu `.venv` do Git.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Se você usou <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> para criar o ambiente virtual, ele já fez isso para você, você pode pular esta etapa. 😎
 
 ///
 
-/// tip | "Dica"
+/// tip | Dica
 
 Faça isso **uma vez**, logo após criar o ambiente virtual.
 
@@ -286,7 +286,7 @@ Esse comando criará um arquivo `.gitignore` com o conteúdo:
 
 Após ativar o ambiente, você pode instalar pacotes nele.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Faça isso **uma vez** ao instalar ou atualizar os pacotes que seu projeto precisa.
 
@@ -298,7 +298,7 @@ Se precisar atualizar uma versão ou adicionar um novo pacote, você **fará iss
 
 Se estiver com pressa e não quiser usar um arquivo para declarar os requisitos de pacote do seu projeto, você pode instalá-los diretamente.
 
-/// tip | "Dica"
+/// tip | Dica
 
 É uma (muito) boa ideia colocar os pacotes e versões que seu programa precisa em um arquivo (por exemplo `requirements.txt` ou `pyproject.toml`).
 
@@ -399,7 +399,7 @@ Por exemplo:
 * <a href="https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment" class="external-link" target="_blank">VS Code</a>
 * <a href="https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html" class="external-link" target="_blank">PyCharm</a>
 
-/// tip | "Dica"
+/// tip | Dica
 
 Normalmente, você só precisa fazer isso **uma vez**, ao criar o ambiente virtual.
 
@@ -425,7 +425,7 @@ Agora você está pronto para começar a trabalhar no seu projeto.
 
 
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você quer entender o que é tudo isso acima?
 
@@ -516,7 +516,7 @@ flowchart LR
     end
 ```
 
-/// tip | "Dica"
+/// tip | Dica
 
 É muito comum em pacotes Python tentar ao máximo **evitar alterações drásticas** em **novas versões**, mas é melhor prevenir do que remediar e instalar versões mais recentes intencionalmente e, quando possível, executar os testes para verificar se tudo está funcionando corretamente.
 
@@ -623,7 +623,7 @@ Esse comando criará ou modificará algumas [variáveis ​​de ambiente](envir
 
 Uma dessas variáveis ​​é a variável `PATH`.
 
-/// tip | "Dica"
+/// tip | Dica
 
 Você pode aprender mais sobre a variável de ambiente `PATH` na seção [Variáveis ​​de ambiente](environment-variables.md#path-environment-variable){.internal-link target=_blank}.
 
@@ -756,7 +756,7 @@ A parte mais importante é que quando você chama ``python`, esse é exatamente
 
 Assim, você pode confirmar se está no ambiente virtual correto.
 
-/// tip | "Dica"
+/// tip | Dica
 
 É fácil ativar um ambiente virtual, obter um Python e então **ir para outro projeto**.
 
index f83024ad9460745e851686d615a1229e304ff1f3..3c5147e7939f770ce4b1a56880dcb3518f8ba69c 100644 (file)
@@ -33,14 +33,14 @@ DRF использовался многими компаниями, включа
 
 Это был один из первых примеров **автоматического документирования API** и это была одна из первых идей, вдохновивших на создание **FastAPI**.
 
-/// note | "Заметка"
+/// note | Заметка
 
 Django REST Framework был создан Tom Christie.
 Он же создал Starlette и Uvicorn, на которых основан **FastAPI**.
 
 ///
 
-/// check | "Идея для **FastAPI**"
+/// check | Идея для **FastAPI**
 
 Должно быть автоматическое создание документации API с пользовательским веб-интерфейсом.
 
@@ -62,7 +62,7 @@ Flask часто используется и для приложений, кот
 Простота Flask, показалась мне подходящей для создания API.
 Но ещё нужно было найти "Django REST Framework" для Flask.
 
-/// check | "Идеи для **FastAPI**"
+/// check | Идеи для **FastAPI**
 
 Это будет микрофреймворк. К нему легко будет добавить необходимые инструменты и части.
 
@@ -108,7 +108,7 @@ def read_url():
 
 Глядите, как похоже `requests.get(...)` и `@app.get(...)`.
 
-/// check | "Идеи для **FastAPI**"
+/// check | Идеи для **FastAPI**
 
 * Должен быть простой и понятный API.
 * Нужно использовать названия HTTP-методов (операций) для упрощения понимания происходящего.
@@ -129,7 +129,7 @@ def read_url():
 
 Вот почему, когда говорят о версии 2.0, обычно говорят "Swagger", а для версии 3+ "OpenAPI".
 
-/// check | "Идеи для **FastAPI**"
+/// check | Идеи для **FastAPI**
 
 Использовать открытые стандарты для спецификаций API вместо самодельных схем.
 
@@ -165,7 +165,7 @@ def read_url():
 Итак, чтобы определить каждую <abbr title="Формат данных">схему</abbr>,
 Вам нужно использовать определенные утилиты и классы, предоставляемые Marshmallow.
 
-/// check | "Идея для **FastAPI**"
+/// check | Идея для **FastAPI**
 
 Использовать код программы для автоматического создания "схем", определяющих типы данных и их проверку.
 
@@ -181,13 +181,13 @@ Webargs - это инструмент, который был создан для
 
 Это превосходный инструмент и я тоже часто пользовался им до **FastAPI**.
 
-/// info | "Информация"
+/// info | Информация
 
 Webargs бы создан разработчиками Marshmallow.
 
 ///
 
-/// check | "Идея для **FastAPI**"
+/// check | Идея для **FastAPI**
 
 Должна быть автоматическая проверка входных данных.
 
@@ -212,13 +212,13 @@ Marshmallow и Webargs осуществляют проверку, анализ 
 Редактор кода не особо может помочь в такой парадигме.
 А изменив какие-то параметры или схемы для Marshmallow можно забыть отредактировать докстринг с YAML и сгенерированная схема становится недействительной.
 
-/// info | "Информация"
+/// info | Информация
 
 APISpec тоже был создан авторами Marshmallow.
 
 ///
 
-/// check | "Идея для **FastAPI**"
+/// check | Идея для **FastAPI**
 
 Необходима поддержка открытого стандарта для API - OpenAPI.
 
@@ -246,13 +246,13 @@ APISpec тоже был создан авторами Marshmallow.
 
 Эти генераторы проектов также стали основой для [Генераторов проектов с **FastAPI**](project-generation.md){.internal-link target=_blank}.
 
-/// info | "Информация"
+/// info | Информация
 
 Как ни странно, но Flask-apispec тоже создан авторами Marshmallow.
 
 ///
 
-/// check | "Идея для **FastAPI**"
+/// check | Идея для **FastAPI**
 
 Схема OpenAPI должна создаваться автоматически и использовать тот же код, который осуществляет сериализацию и проверку данных.
 
@@ -276,7 +276,7 @@ APISpec тоже был создан авторами Marshmallow.
 Кроме того, он не очень хорошо справляется с вложенными моделями.
 Если в запросе имеется объект JSON, внутренние поля которого, в свою очередь, являются вложенными объектами JSON, это не может быть должным образом задокументировано и проверено.
 
-/// check | "Идеи для **FastAPI** "
+/// check | Идеи для **FastAPI**
 
 Нужно использовать подсказки типов, чтоб воспользоваться поддержкой редактора кода.
 
@@ -289,7 +289,7 @@ APISpec тоже был создан авторами Marshmallow.
 Sanic был одним из первых чрезвычайно быстрых Python-фреймворков основанных на `asyncio`.
 Он был сделан очень похожим на Flask.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 В нём использован <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> вместо стандартного цикла событий `asyncio`, что и сделало его таким быстрым.
 
@@ -297,7 +297,7 @@ Sanic был одним из первых чрезвычайно быстрых
 
 ///
 
-/// check | "Идеи для **FastAPI**"
+/// check | Идеи для **FastAPI**
 
 Должна быть сумасшедшая производительность.
 
@@ -318,7 +318,7 @@ Falcon - ещё один высокопроизводительный Python-ф
 Либо эти функции должны быть встроены во фреймворк, сконструированный поверх Falcon, как в Hug.
 Такая же особенность присутствует и в других фреймворках, вдохновлённых идеей Falcon, использовать только один объект запроса и один объект ответа.
 
-/// check | "Идея для **FastAPI**"
+/// check | Идея для **FastAPI**
 
 Найдите способы добиться отличной производительности.
 
@@ -348,7 +348,7 @@ Molten мне попался на начальной стадии написан
 Это больше похоже на Django, чем на Flask и Starlette.
 Он разделяет в коде вещи, которые довольно тесно связаны.
 
-/// check | "Идея для **FastAPI**"
+/// check | Идея для **FastAPI**
 
 Определить дополнительные проверки типов данных, используя значения атрибутов модели "по умолчанию".
 Это улучшает помощь редактора и раньше это не было доступно в Pydantic.
@@ -374,13 +374,13 @@ Hug был одним из первых фреймворков, реализов
 
 Поскольку он основан на WSGI, старом стандарте для синхронных веб-фреймворков, он не может работать с веб-сокетами и другими модными штуками, но всё равно обладает высокой производительностью.
 
-/// info | "Информация"
+/// info | Информация
 
 Hug создан Timothy Crosley, автором <a href="https://github.com/timothycrosley/isort" class="external-link" target="_blank">`isort`</a>, отличного инструмента для автоматической сортировки импортов в Python-файлах.
 
 ///
 
-/// check | "Идеи для **FastAPI**"
+/// check | Идеи для **FastAPI**
 
 Hug повлиял на создание некоторых частей APIStar и был одним из инструментов, которые я счел наиболее многообещающими, наряду с APIStar.
 
@@ -418,7 +418,7 @@ Hug вдохновил **FastAPI** объявить параметр `ответ
 
 Ныне APIStar - это набор инструментов для проверки спецификаций OpenAPI.
 
-/// info | "Информация"
+/// info | Информация
 
 APIStar был создан Tom Christie. Тот самый парень, который создал:
 
@@ -428,7 +428,7 @@ APIStar был создан Tom Christie. Тот самый парень, кот
 
 ///
 
-/// check | "Идеи для **FastAPI**"
+/// check | Идеи для **FastAPI**
 
 Воплощение.
 
@@ -452,7 +452,7 @@ Pydantic - это библиотека для валидации данных, 
 Его можно сравнить с Marshmallow, хотя в бенчмарках Pydantic быстрее, чем Marshmallow.
 И он основан на тех же подсказках типов, которые отлично поддерживаются редакторами кода.
 
-/// check | "**FastAPI** использует Pydantic"
+/// check | **FastAPI** использует Pydantic
 
 Для проверки данных, сериализации данных и автоматической документации моделей (на основе JSON Schema).
 
@@ -488,7 +488,7 @@ Starlette обеспечивает весь функционал микрофр
 **FastAPI** добавляет эти функции используя подсказки типов Python и Pydantic.
 Ещё **FastAPI** добавляет систему внедрения зависимостей, утилиты безопасности, генерацию схемы OpenAPI и т.д.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 ASGI - это новый "стандарт" разработанный участниками команды Django.
 Он пока что не является "стандартом в Python" (то есть принятым PEP), но процесс принятия запущен.
@@ -498,7 +498,7 @@ ASGI - это новый "стандарт" разработанный учас
 
 ///
 
-/// check | "**FastAPI** использует Starlette"
+/// check | **FastAPI** использует Starlette
 
 В качестве ядра веб-сервиса для обработки запросов, добавив некоторые функции сверху.
 
@@ -518,7 +518,7 @@ Uvicorn является сервером, а не фреймворком.
 
 Он рекомендуется в качестве сервера для Starlette и **FastAPI**.
 
-/// check | "**FastAPI** рекомендует его"
+/// check | **FastAPI** рекомендует его
 
 Как основной сервер для запуска приложения **FastAPI**.
 
index c4370f9bbfa7c383c29371a32b1d5debeb09f237..67034ad03f2ef6f016879413acb809b79ed42803 100644 (file)
@@ -106,7 +106,7 @@ $ python -m pip install --upgrade pip
 
 </div>
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Каждый раз, перед установкой новой библиотеки в виртуальное окружение при помощи `pip`, не забудьте активировать это виртуальное окружение.
 
@@ -162,7 +162,7 @@ $ bash scripts/format.sh
 
 Также существуют дополнительные инструменты/скрипты для работы с переводами в `./scripts/docs.py`.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Нет необходимости заглядывать в `./scripts/docs.py`, просто используйте это в командной строке.
 
@@ -254,7 +254,7 @@ $ uvicorn tutorial001:app --reload
 
 * Проверьте <a href="https://github.com/fastapi/fastapi/pulls" class="external-link" target="_blank">существующие пул-реквесты</a> для Вашего языка. Добавьте отзывы с просьбой внести изменения, если они необходимы, или одобрите их.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вы можете <a href="https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request" class="external-link" target="_blank">добавлять комментарии с предложениями по изменению</a> в существующие пул-реквесты.
 
@@ -282,7 +282,7 @@ $ uvicorn tutorial001:app --reload
 
 Кодом испанского языка является `es`. А значит директория для переводов на испанский язык: `docs/es/`.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Главный ("официальный") язык - английский, директория для него `docs/en/`.
 
@@ -325,7 +325,7 @@ docs/en/docs/features.md
 docs/es/docs/features.md
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Заметьте, что в пути файла мы изменили только код языка с `en` на `es`.
 
@@ -400,7 +400,7 @@ Updating en
 
 После чего Вы можете проверить в своем редакторе кода, что появился новый каталог `docs/ht/`.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Создайте первый пул-реквест, который будет содержать только пустую директорию для нового языка, прежде чем добавлять переводы.
 
index c4102579099056ab005c16b94c18348755c6ea93..7cdc2952654593c85a71085634ed6e01dd2ed589 100644 (file)
 
 Для случаев, когда ошибки приводят к сбою в запущенном **процессе**, Вам понадобится добавить компонент, который **перезапустит** процесс хотя бы пару раз...
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 ... Если приложение падает сразу же после запуска, вероятно бесполезно его бесконечно перезапускать. Но полагаю, вы заметите такое поведение во время разработки или, по крайней мере, сразу после развёртывания.
 
 * **Облачные сервисы**, которые позаботятся обо всём за Вас
     * Возможно, что облачный сервис умеет **управлять запуском дополнительных экземпляров приложения**. Вероятно, он потребует, чтоб вы указали - какой **процесс** или **образ** следует клонировать. Скорее всего, вы укажете **один процесс Uvicorn** и облачный сервис будет запускать его копии при необходимости.
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Если вы не знаете, что такое **контейнеры**, Docker или Kubernetes, не переживайте.
 
 
 Безусловно, возможны случаи, когда нет проблем при выполнении предварительной подготовки параллельно или несколько раз. Тогда Вам повезло, работать с ними намного проще.
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Имейте в виду, что в некоторых случаях запуск вашего приложения **может не требовать каких-либо предварительных шагов вовсе**.
 
 * Bash-скрипт, выполняющий предварительные шаги, а затем запускающий приложение.
     * При этом Вам всё ещё нужно найти способ - как запускать/перезапускать *такой* bash-скрипт, обнаруживать ошибки и т.п.
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Я приведу Вам больше конкретных примеров работы с контейнерами в главе: [FastAPI внутри контейнеров - Docker](docker.md){.internal-link target=_blank}.
 
index 9eef5c4d2a6a969012e004b2f957dd8187f29b92..31da01b788820d6858938e59f56a1daaa1c654ff 100644 (file)
@@ -4,7 +4,7 @@
 
 Использование контейнеров на основе Linux имеет ряд преимуществ, включая  **безопасность**, **воспроизводимость**, **простоту** и прочие.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Торопитесь или уже знакомы с этой технологией? Перепрыгните на раздел [Создать Docker-образ для FastAPI 👇](#docker-fastapi)
 
@@ -135,7 +135,7 @@ Successfully installed fastapi pydantic uvicorn
 
 </div>
 
-/// info | "Информация"
+/// info | Информация
 
 Существуют и другие инструменты управления зависимостями.
 
@@ -231,7 +231,7 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
 
     Так как команда выполняется внутри директории `/code`, в которую мы поместили папку `./app` с приложением, то **Uvicorn** сможет найти и **импортировать** объект `app` из файла `app.main`.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Если ткнёте на кружок с плюсом, то увидите пояснения. 👆
 
@@ -306,7 +306,7 @@ $ docker build -t myimage .
 
 </div>
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Обратите внимание, что в конце написана точка -  `.`, это то же самое что и `./`, тем самым мы указываем Docker директорию, из которой нужно выполнять сборку образа контейнера.
 
@@ -410,7 +410,7 @@ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
 
 Это может быть другой контейнер, в котором есть, например, <a href="https://traefik.io/" class="external-link" target="_blank">Traefik</a>, работающий с **HTTPS** и **самостоятельно** обновляющий **сертификаты**.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Traefik совместим с Docker, Kubernetes и им подобными инструментами. Он очень прост в установке и настройке использования HTTPS для Ваших контейнеров.
 
@@ -442,7 +442,7 @@ Traefik совместим с Docker, Kubernetes и им подобными ин
 
 Поскольку этот компонент **принимает запросы** и равномерно **распределяет** их между компонентами, его также называют **балансировщиком нагрузки**.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 **Прокси-сервер завершения работы TLS** одновременно может быть **балансировщиком нагрузки**.
 
@@ -525,7 +525,7 @@ Traefik совместим с Docker, Kubernetes и им подобными ин
 
 Когда вы запускаете **множество контейнеров**, в каждом из которых работает **только один процесс** (например, в кластере **Kubernetes**), может возникнуть необходимость иметь **отдельный контейнер**, который осуществит **предварительные шаги перед запуском** остальных контейнеров (например, применяет миграции к базе данных).
 
-/// info | "Информация"
+/// info | Информация
 
 При использовании Kubernetes, это может быть <a href="https://kubernetes.io/docs/concepts/workloads/pods/init-containers/" class="external-link" target="_blank">Инициализирующий контейнер</a>.
 
@@ -545,7 +545,7 @@ Traefik совместим с Docker, Kubernetes и им подобными ин
 
 * <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker" class="external-link" target="_blank">tiangolo/uvicorn-gunicorn-fastapi</a>.
 
-/// warning | "Предупреждение"
+/// warning | Предупреждение
 
 Скорее всего у вас **нет необходимости** в использовании этого образа или подобного ему и лучше создать свой образ с нуля как описано тут: [Создать Docker-образ для FastAPI](#docker-fastapi).
 
@@ -557,7 +557,7 @@ Traefik совместим с Docker, Kubernetes и им подобными ин
 
 Он также поддерживает прохождение <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker#pre_start_path" class="external-link" target="_blank">**Подготовительных шагов при запуске контейнеров**</a> при помощи скрипта.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Для просмотра всех возможных настроек перейдите на страницу этого Docker-образа: <a href="https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker" class="external-link" target="_blank">tiangolo/uvicorn-gunicorn-fastapi</a>.
 
@@ -689,7 +689,7 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
 
 11. Запустите `uvicorn`, указав ему использовать объект `app`, расположенный в `app.main`.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Если ткнёте на кружок с плюсом, то увидите объяснения, что происходит в этой строке.
 
index 3d487c465f453efb92c2a1f65a97df8af47f910c..85c4cce604e9985535162aa4e3e47d4ba42eb690 100644 (file)
@@ -4,7 +4,7 @@
 
 Но всё несколько сложнее.
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Если вы торопитесь или вам не интересно, можете перейти на следующую страницу этого пошагового руководства по размещению приложений на серверах с использованием различных технологий.
 
@@ -78,7 +78,7 @@
 
 Обычно эту запись достаточно указать один раз, при первоначальной настройке всего сервера.
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Уровни протоколов, работающих с именами доменов, намного ниже HTTPS, но об этом следует упомянуть здесь, так как всё зависит от доменов и IP-адресов.
 
@@ -128,7 +128,7 @@ DNS-сервера присылают браузеру определённый
 
 Таким образом, **HTTPS** это тот же **HTTP**, но внутри **безопасного TLS-соединения** вместо чистого (незашифрованного) TCP-соединения.
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Обратите внимание, что шифрование происходит на **уровне TCP**, а не на более высоком уровне HTTP.
 
index 78363cef88d7bf0d158771dad82e6cd5bcb46551..9b1d32be8029053812bd0c1138dfd7693ad84767 100644 (file)
@@ -39,7 +39,7 @@ $ pip install "uvicorn[standard]"
 
 </div>
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 С опцией `standard`, Uvicorn будет устанавливаться и использоваться с некоторыми дополнительными рекомендованными зависимостями.
 
@@ -99,7 +99,7 @@ Running on 0.0.0.0:8080 over http (CTRL + C to quit)
 
 ////
 
-/// warning | "Предупреждение"
+/// warning | Предупреждение
 
 Не забудьте удалить опцию `--reload`, если ранее пользовались ею.
 
index 17b6446d945ed91091a13fe228a7c5d99bdffe57..e8db30ce8965b90c0c1bfaed96a2bb9c1776e15f 100644 (file)
@@ -42,7 +42,7 @@ fastapi>=0.45.0,<0.46.0
 
 FastAPI следует соглашению в том, что любые изменения "ПАТЧ"-версии предназначены для исправления багов и внесения обратно совместимых изменений.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 "ПАТЧ" - это последнее число. Например, в `0.2.3`, ПАТЧ-версия - это `3`.
 
@@ -56,7 +56,7 @@ fastapi>=0.45.0,<0.46.0
 
 Обратно несовместимые изменения и новые функции добавляются в "МИНОРНЫЕ" версии.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 "МИНОРНАЯ" версия - это число в середине. Например, в `0.2.3` МИНОРНАЯ версия - это `2`.
 
index 31f245e7a312dd6f88ae0a43da4e9c1b460d8a27..77d6b936a899614a371a822b77ee2b05a6d81275 100644 (file)
@@ -66,7 +66,7 @@ second_user_data = {
 my_second_user: User = User(**second_user_data)
 ```
 
-/// info | "Информация"
+/// info | Информация
 
 `**second_user_data` означает:
 
index fa82008171a3a2ff2cdc6610a2ccdb736d6fcb36..474b3d689b1433d9dee1d15f6d0fac1e0cc72366 100644 (file)
 
 * Затем, используя **комментарий**, сообщите, что Вы сделали проверку, тогда я буду знать, что Вы действительно проверили код.
 
-/// info | "Информация"
+/// info | Информация
 
 К сожалению, я не могу так просто доверять пул-реквестам, у которых уже есть несколько одобрений.
 
 
 Подключайтесь к  👥 <a href="https://discord.gg/VQjSZaeJmf" class="external-link" target="_blank"> чату в Discord</a> 👥 и общайтесь с другими участниками сообщества FastAPI.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вопросы по проблемам с фреймворком лучше задавать в <a href="https://github.com/fastapi/fastapi/issues/new/choose" class="external-link" target="_blank">GitHub issues</a>, так больше шансов, что Вы получите помощь от [Экспертов FastAPI](fastapi-people.md#_3){.internal-link target=_blank}.
 
index f3b2c6113837938bc33c2dfee4c53d7aa1bb5c62..0c4cbb09cf5b5280300ab51bda246443bcd9ee33 100644 (file)
@@ -22,7 +22,7 @@
 
 ////
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Обратите внимание, что функция `Field` импортируется непосредственно из `pydantic`, а не из `fastapi`, как все остальные функции (`Query`, `Path`, `Body` и т.д.).
 
@@ -50,7 +50,7 @@
 
 Функция `Field` работает так же, как `Query`, `Path` и `Body`, у неё такие же параметры и т.д.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 На самом деле, `Query`, `Path` и другие функции, которые вы увидите в дальнейшем, создают объекты подклассов общего класса `Param`, который сам по себе является подклассом `FieldInfo` из Pydantic.
 
@@ -62,7 +62,7 @@
 
 ///
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Обратите внимание, что каждый атрибут модели с типом, значением по умолчанию и `Field` имеет ту же структуру, что и параметр *функции обработки пути* с `Field` вместо `Path`, `Query` и `Body`.
 
@@ -75,7 +75,7 @@
 Вы узнаете больше о добавлении дополнительной информации позже в документации, когда будете изучать, как задавать примеры принимаемых данных.
 
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Дополнительные ключи, переданные в функцию `Field`, также будут присутствовать в сгенерированной OpenAPI схеме вашего приложения.
 Поскольку эти ключи не являются обязательной частью спецификации OpenAPI, некоторые инструменты OpenAPI, например, [валидатор OpenAPI](https://validator.swagger.io/), могут не работать с вашей сгенерированной схемой.
index 53965f0ec09a17a24c72074a532d50e65c524748..594e1dbca66a8cca9b3956f53f91aa7107891979 100644 (file)
@@ -34,7 +34,7 @@
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать `Annotated` версию, если это возможно.
 
@@ -48,7 +48,7 @@
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать версию с `Annotated`, если это возможно.
 
@@ -60,7 +60,7 @@
 
 ////
 
-/// note | "Заметка"
+/// note | Заметка
 
 Заметьте, что в данном случае параметр `item`, который будет взят из тела запроса, необязателен. Так как было установлено значение `None` по умолчанию.
 
 }
 ```
 
-/// note | "Внимание"
+/// note | Внимание
 
 Обратите внимание, что хотя параметр `item` был объявлен таким же способом, как и раньше, теперь предпологается, что он находится внутри тела с ключом `item`.
 
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать `Annotated` версию, если это возможно.
 
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать `Annotated` версию, если это возможно.
 
@@ -252,7 +252,7 @@ q: str | None = None
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать `Annotated` версию, если это возможно.
 
@@ -266,7 +266,7 @@ q: str | None = None
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать `Annotated` версию, если это возможно.
 
@@ -278,7 +278,7 @@ q: str | None = None
 
 ////
 
-/// info | "Информация"
+/// info | Информация
 
 `Body` также имеет все те же дополнительные параметры валидации и метаданных, как у `Query`,`Path` и других, которые вы увидите позже.
 
@@ -324,7 +324,7 @@ item: Item = Body(embed=True)
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать `Annotated` версию, если это возможно.
 
@@ -338,7 +338,7 @@ item: Item = Body(embed=True)
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Заметка"
+/// tip | Заметка
 
 Рекомендуется использовать `Annotated` версию, если это возможно.
 
index 780946725a745d95e3c2bdeee796598bde40f0e9..9abd4f432fbb96d12d719ddb532138276dd6382a 100644 (file)
@@ -304,7 +304,7 @@ my_list: List[str]
 }
 ```
 
-/// info | "Информация"
+/// info | Информация
 
 Заметьте, что теперь у ключа `images` есть список объектов изображений.
 
@@ -338,7 +338,7 @@ my_list: List[str]
 
 ////
 
-/// info | "Информация"
+/// info | Информация
 
 Заметьте, что у объекта `Offer` есть список объектов `Item`, которые, в свою очередь, могут содержать необязательный список объектов `Image`
 
@@ -420,7 +420,7 @@ images: list[Image]
 
 ////
 
-/// tip | "Совет"
+/// tip | Совет
 
 Имейте в виду, что JSON поддерживает только ключи типа `str`.
 
index 3ecfe52f4f145c8e59570797eb41f00d78760811..c80952f700a32b8244903c100f43d16ccb0a6c57 100644 (file)
@@ -54,7 +54,7 @@
 
 Это означает, что можно передавать только те данные, которые необходимо обновить, оставляя остальные нетронутыми.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 `PATCH` менее распространен и известен, чем `PUT`.
 
 
 ////
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Эту же технику можно использовать и для операции HTTP `PUT`.
 
 
 ///
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Обратите внимание, что входная модель по-прежнему валидируется.
 
index 91b169d07b589dbd743ffc95f1d0ac754290ded2..62927f0d127096978a121905cb5929696324f944 100644 (file)
@@ -8,7 +8,7 @@
 
 Чтобы объявить тело **запроса**, необходимо использовать модели <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a>, со всей их мощью и преимуществами.
 
-/// info | "Информация"
+/// info | Информация
 
 Чтобы отправить данные, необходимо использовать один из методов: `POST` (обычно), `PUT`, `DELETE` или `PATCH`.
 
 
 <img src="/img/tutorial/body/image05.png">
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Если вы используете <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> в качестве редактора, то вам стоит попробовать плагин <a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic PyCharm Plugin</a>.
 
 * Если аннотация типа параметра содержит **примитивный тип** (`int`, `float`, `str`, `bool` и т.п.), он будет интерпретирован как параметр **запроса**.
 * Если аннотация типа параметра представляет собой **модель Pydantic**, он будет интерпретирован как параметр **тела запроса**.
 
-/// note | "Заметка"
+/// note | Заметка
 
 FastAPI понимает, что значение параметра `q` не является обязательным, потому что имеет значение по умолчанию `= None`.
 
index 2a73a591832ec9c263ac19954b1da6a12ebc121d..88533f7f82667b4626a3918dbae9741884df6765 100644 (file)
@@ -44,7 +44,7 @@
 
 ////
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 `Cookie` - это класс, родственный `Path` и `Query`. Он также наследуется от общего класса `Param`.
 
@@ -52,7 +52,7 @@
 
 ///
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Для объявления cookies, вам нужно использовать `Cookie`, иначе параметры будут интерпретированы как параметры запроса.
 
index 8d415a2c143663a77262a8787b8f61946fd687c1..622cd5a9862d8e358bb9d2207456520cd22557a5 100644 (file)
@@ -78,7 +78,7 @@
 
 Для получения более подробной информации о <abbr title="Cross-Origin Resource Sharing">CORS</abbr>, обратитесь к <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Документации CORS от Mozilla</a>.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Вы также можете использовать `from starlette.middleware.cors import CORSMiddleware`.
 
index 606a32bfced7c56091183b156eae91b4f99ecbb3..0feeaa20c4c733e7ceb5a337257821a791d205d2 100644 (file)
@@ -74,7 +74,7 @@ from myapp import app
 
 не будет выполнена.
 
-/// info | "Информация"
+/// info | Информация
 
 Для получения дополнительной информации, ознакомьтесь с <a href="https://docs.python.org/3/library/__main__.html" class="external-link" target="_blank">официальной документацией Python</a>.
 
index 161101bb306336b8de6c1e631269caa70847d431..486ff9ea96762e6203a09e30f56b72387240f5fe 100644 (file)
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -46,7 +46,7 @@
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -143,7 +143,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -157,7 +157,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -197,7 +197,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -211,7 +211,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -251,7 +251,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -265,7 +265,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -317,7 +317,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -331,7 +331,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -351,7 +351,7 @@ fluffy = Cat(name="Mr Fluffy")
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -395,7 +395,7 @@ commons: Annotated[CommonQueryParams, ...
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -421,7 +421,7 @@ commons: Annotated[Any, Depends(CommonQueryParams)]
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -461,7 +461,7 @@ commons = Depends(CommonQueryParams)
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -475,7 +475,7 @@ commons = Depends(CommonQueryParams)
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -497,7 +497,7 @@ commons = Depends(CommonQueryParams)
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -532,7 +532,7 @@ commons: Annotated[CommonQueryParams, Depends(CommonQueryParams)]
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -556,7 +556,7 @@ commons: Annotated[CommonQueryParams, Depends()]
 
 //// tab | Python 3.6 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -598,7 +598,7 @@ commons: CommonQueryParams = Depends()
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -612,7 +612,7 @@ commons: CommonQueryParams = Depends()
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -626,7 +626,7 @@ commons: CommonQueryParams = Depends()
 
 ...и **FastAPI** будет знать, что делать.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Если это покажется вам более запутанным, чем полезным, не обращайте внимания, это вам не *нужно*.
 
index 99a86e999ea9c9aad94135c23b6a08418581ed19..83f8ec0d2a5b0c4bd9ac6e271df5431d0f627eed 100644 (file)
@@ -4,13 +4,13 @@ FastAPI поддерживает зависимости, которые выпо
 
 Для этого используйте `yield` вместо `return`, а дополнительный код напишите после него.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Обязательно используйте `yield` один-единственный раз.
 
 ///
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Любая функция, с которой может работать:
 
@@ -45,7 +45,7 @@ FastAPI поддерживает зависимости, которые выпо
 {!../../docs_src/dependencies/tutorial007.py!}
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Можно использовать как `async` так и обычные функции.
 
@@ -93,7 +93,7 @@ FastAPI поддерживает зависимости, которые выпо
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -129,7 +129,7 @@ FastAPI поддерживает зависимости, которые выпо
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -149,7 +149,7 @@ FastAPI поддерживает зависимости, которые выпо
 
 **FastAPI** проследит за тем, чтобы все выполнялось в правильном порядке.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Это работает благодаря <a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">Контекстным менеджерам</a> в Python.
 
@@ -177,7 +177,7 @@ FastAPI поддерживает зависимости, которые выпо
 
 Если у вас есть пользовательские исключения, которые вы хотите обрабатывать *до* возврата ответа и, возможно, модифицировать ответ, даже вызывая `HTTPException`, создайте [Cобственный обработчик исключений](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вы все еще можете вызывать исключения, включая `HTTPException`, *до* `yield`. Но не после.
 
@@ -225,7 +225,7 @@ participant tasks as Background tasks
     end
 ```
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Клиенту будет отправлен только **один ответ**. Это может быть один из ответов об ошибке или это будет ответ от *операции пути*.
 
@@ -233,7 +233,7 @@ participant tasks as Background tasks
 
 ///
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 На этой диаграмме показано "HttpException", но вы также можете вызвать любое другое исключение, для которого вы создаете [Пользовательский обработчик исключений](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}.
 
@@ -243,7 +243,7 @@ participant tasks as Background tasks
 
 ## Зависимости с `yield`, `HTTPException` и фоновыми задачами
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Скорее всего, вам не нужны эти технические подробности, вы можете пропустить этот раздел и продолжить ниже.
 
@@ -257,7 +257,7 @@ participant tasks as Background tasks
 
 Тем не менее, поскольку это означало бы ожидание ответа в сети, а также ненужное удержание ресурса в зависимости от доходности (например, соединение с базой данных), это было изменено в FastAPI 0.106.0.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Кроме того, фоновая задача обычно представляет собой независимый набор логики, который должен обрабатываться отдельно, со своими собственными ресурсами (например, собственным подключением к базе данных).
 Таким образом, вы, вероятно, получите более чистый код.
@@ -290,7 +290,7 @@ with open("./somefile.txt") as f:
 
 ### Использование менеджеров контекста в зависимостях с помощью `yield`
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Это более или менее "продвинутая" идея.
 
@@ -307,7 +307,7 @@ with open("./somefile.txt") as f:
 {!../../docs_src/dependencies/tutorial010.py!}
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Другой способ создания контекстного менеджера - с помощью:
 
index 7dbd50ae12618795c23b80bc8a47194377cc9357..a4dfeb8ac9333b088ad97205ad761e052b9f3c60 100644 (file)
@@ -24,7 +24,7 @@
 
 //// tab | Python 3.8 non-Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать 'Annotated' версию, если это возможно.
 
index fcd9f46dc2c2a291676cba0851e6e72b2ce2c3fb..b6cf7c7800f8173b993048dc59efbc8f0f225768 100644 (file)
@@ -55,7 +55,7 @@
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Настоятельно рекомендуем использовать `Annotated` версию насколько это возможно.
 
@@ -69,7 +69,7 @@
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Настоятельно рекомендуем использовать `Annotated` версию насколько это возможно.
 
@@ -99,7 +99,7 @@
 
 И в конце она возвращает `dict`, содержащий эти значения.
 
-/// info | "Информация"
+/// info | Информация
 
 **FastAPI** добавил поддержку для `Annotated` (и начал её рекомендовать) в версии 0.95.0.
 
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Настоятельно рекомендуем использовать `Annotated` версию насколько это возможно.
 
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Настоятельно рекомендуем использовать `Annotated` версию насколько это возможно.
 
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Настоятельно рекомендуем использовать `Annotated` версию насколько это возможно.
 
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Настоятельно рекомендуем использовать `Annotated` версию насколько это возможно.
 
 
 И потом функция берёт параметры так же, как *функция обработки пути*.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 В следующей главе вы увидите, какие другие вещи, помимо функций, можно использовать в качестве зависимостей.
 
@@ -250,7 +250,7 @@ common_parameters --> read_users
 
 Таким образом, вы пишете общий код один раз, и **FastAPI** позаботится о его вызове для ваших *операций с путями*.
 
-/// check | "Проверка"
+/// check | Проверка
 
 Обратите внимание, что вы не создаёте специальный класс и не передаёте его куда-то в **FastAPI** для регистрации, или что-то в этом роде.
 
@@ -294,7 +294,7 @@ commons: Annotated[dict, Depends(common_parameters)]
 
 ////
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Это стандартный синтаксис python и называется "type alias", это не особенность **FastAPI**.
 
@@ -316,7 +316,7 @@ commons: Annotated[dict, Depends(common_parameters)]
 
 Это всё не важно. **FastAPI** знает, что нужно сделать. 😎
 
-/// note | "Информация"
+/// note | Информация
 
 Если вам эта тема не знакома, прочтите [Async: *"In a hurry?"*](../../async.md){.internal-link target=_blank} раздел о `async` и `await` в документации.
 
index ae0fd0824d3427d604e7f646b7a25553f9dbf2ea..0e8cb20e7cf45fd15e784464308c9e9ab7aed101 100644 (file)
@@ -36,7 +36,7 @@
 
 //// tab | Python 3.10 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -50,7 +50,7 @@
 
 //// tab | Python 3.6 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -96,7 +96,7 @@
 
 //// tab | Python 3.10 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 //// tab | Python 3.6 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 //// tab | Python 3.10 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 //// tab | Python 3.6 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 ////
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Обратите внимание, что мы объявляем только одну зависимость в *функции операции пути* - `query_or_cookie_extractor`.
 
@@ -223,7 +223,7 @@ async def needy_dependency(fresh_value: Annotated[str, Depends(get_value, use_ca
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -244,7 +244,7 @@ async def needy_dependency(fresh_value: str = Depends(get_value, use_cache=False
 
 Но, тем не менее, эта система очень мощная и позволяет вам объявлять вложенные графы (деревья) зависимостей сколь угодно глубоко.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Все это может показаться не столь полезным на этих простых примерах.
 
index c9900cb2c15db8b1c174fea740751efb05b0d7ed..523644ac8af1359c2105a5305b8c20f087d56783 100644 (file)
@@ -42,7 +42,7 @@
 
 Функция не возвращает большой `str`, содержащий данные в формате JSON (в виде строки). Она возвращает стандартную структуру данных Python (например, `dict`) со значениями и подзначениями, которые совместимы с JSON.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 `jsonable_encoder` фактически используется **FastAPI** внутри системы для преобразования данных. Однако он полезен и во многих других сценариях.
 
index e7ff3f40f21d70c64760e0358688887dd3859c03..241f7077984f1a66cd231258723d0c35510fc9c6 100644 (file)
@@ -8,7 +8,7 @@
 * **Модель для вывода** не должна содержать пароль.
 * **Модель для базы данных**, возможно, должна содержать хэшированный пароль.
 
-/// danger | "Внимание"
+/// danger | Внимание
 
 Никогда не храните пароли пользователей в чистом виде. Всегда храните "безопасный хэш", который вы затем сможете проверить.
 
@@ -146,7 +146,7 @@ UserInDB(
 )
 ```
 
-/// warning | "Предупреждение"
+/// warning | Предупреждение
 
 Цель использованных в примере вспомогательных функций - не более чем демонстрация возможных операций с данными, но, конечно, они не обеспечивают настоящую безопасность.
 
@@ -192,7 +192,7 @@ UserInDB(
 
 Для этого используйте стандартные аннотации типов в Python <a href="https://docs.python.org/3/library/typing.html#typing.Union" class="external-link" target="_blank">`typing.Union`</a>:
 
-/// note | "Примечание"
+/// note | Примечание
 
 При объявлении <a href="https://docs.pydantic.dev/latest/concepts/types/#unions" class="external-link" target="_blank">`Union`</a>, сначала указывайте наиболее детальные типы, затем менее детальные. В примере ниже более детальный `PlaneItem` стоит перед `CarItem` в `Union[PlaneItem, CarItem]`.
 
index b1de217cd48b847ac7d17460fd73679e8603acf0..309f26c4f3587259de7dd6bc453fc9f656b13054 100644 (file)
@@ -24,7 +24,7 @@ $ uvicorn main:app --reload
 
 </div>
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Команда `uvicorn main:app` обращается к:
 
@@ -139,7 +139,7 @@ OpenAPI описывает схему API. Эта схема содержит о
 
 `FastAPI` это класс в Python, который предоставляет всю функциональность для API.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 `FastAPI` это класс, который наследуется непосредственно от `Starlette`.
 
@@ -205,7 +205,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | "Дополнительная иформация"
+/// info | Дополнительная иформация
 
 Термин "path" также часто называется "endpoint" или "route".
 
@@ -259,7 +259,7 @@ https://example.com/items/foo
 * путь `/`
 * использующих <abbr title="HTTP GET метод"><code>get</code> операцию</abbr>
 
-/// info | "`@decorator` Дополнительная информация"
+/// info | `@decorator` Дополнительная информация
 
 Синтаксис `@something` в Python называется "декоратор".
 
@@ -286,7 +286,7 @@ https://example.com/items/foo
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вы можете использовать каждую операцию (HTTP-метод) по своему усмотрению.
 
@@ -324,7 +324,7 @@ https://example.com/items/foo
 {!../../docs_src/first_steps/tutorial003.py!}
 ```
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Если не знаете в чём разница, посмотрите [Конкурентность: *"Нет времени?"*](../async.md#_1){.internal-link target=_blank}.
 
index e7bfb85aa3434670ee8b80af87e24b194cbfbf61..a06644376493f28820b48396477b9d3d6e6dc860 100644 (file)
@@ -63,7 +63,7 @@
 }
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 При вызове `HTTPException` в качестве параметра `detail` можно передавать любое значение, которое может быть преобразовано в JSON, а не только `str`.
 
 {"message": "Oops! yolo did something. There goes a rainbow..."}
 ```
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Также можно использовать `from starlette.requests import Request` и `from starlette.responses import JSONResponse`.
 
@@ -166,7 +166,7 @@ path -> item_id
 
 #### `RequestValidationError` или `ValidationError`
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Это технические детали, которые можно пропустить, если они не важны для вас сейчас.
 
@@ -192,7 +192,7 @@ path -> item_id
 {!../../docs_src/handling_errors/tutorial004.py!}
 ```
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Можно также использовать `from starlette.responses import PlainTextResponse`.
 
index 18e1e60d07330bffdd2a8e43b924cacf367cbe50..904709b04536522ff2811ae8e67f420b856c1bd7 100644 (file)
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -46,7 +46,7 @@
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -90,7 +90,7 @@
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 ////
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 `Header` - это "родственный" класс `Path`, `Query` и `Cookie`. Он также наследуется от того же общего класса `Param`.
 
 
 ///
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Чтобы объявить заголовки, важно использовать `Header`, иначе параметры интерпретируются как query-параметры.
 
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 ////
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Прежде чем установить для `convert_underscores` значение `False`, имейте в виду, что некоторые HTTP-прокси и серверы запрещают использование заголовков с подчеркиванием.
 
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 //// tab | Python 3.9+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
index 4cf45c0ed35780c24213430f734ac102ff7c8cd7..ddca2fbb10d99d8edaae790ca1ab4706e4f4bdca 100644 (file)
@@ -52,7 +52,7 @@ $ pip install "fastapi[all]"
 
 ...это также включает `uvicorn`, который вы можете использовать в качестве сервера, который запускает ваш код.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Вы также можете установить его по частям.
 
index 246458f420cd05666cf63a2cd28b6a556b8573c5..ae739a043117a1480677216b343a7bcd35fc91ff 100644 (file)
@@ -21,7 +21,7 @@
 {!../../docs_src/metadata/tutorial001.py!}
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вы можете использовать Markdown в поле `description`, и оно будет отображено в выводе.
 
@@ -57,7 +57,7 @@
 
 Помните, что вы можете использовать Markdown внутри описания, к примеру "login" будет отображен жирным шрифтом (**login**) и "fancy" будет отображаться курсивом (_fancy_).
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вам необязательно добавлять метаданные для всех используемых тегов
 
@@ -70,7 +70,7 @@
 {!../../docs_src/metadata/tutorial004.py!}
 ```
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Узнайте больше о тегах в [Конфигурации операции пути](path-operation-configuration.md#_3){.internal-link target=_blank}.
 
index 5f3855af291e40d05b2c26b25736aa1ade4c2861..ac12b7084f9122fcb322b58592b0b4112056c17d 100644 (file)
@@ -2,7 +2,7 @@
 
 Существует несколько параметров, которые вы можете передать вашему *декоратору операций пути* для его настройки.
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Помните, что эти параметры передаются непосредственно *декоратору операций пути*, а не вашей *функции-обработчику операций пути*.
 
@@ -42,7 +42,7 @@
 
 Этот код состояния будет использован в ответе и будет добавлен в схему OpenAPI.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Вы также можете использовать `from starlette import status`.
 
 
 ////
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Помните, что `response_description` относится конкретно к ответу, а `description` относится к *операции пути* в целом.
 
 ///
 
-/// check | "Технические детали"
+/// check | Технические детали
 
 OpenAPI указывает, что каждой *операции пути* необходимо описание ответа.
 
index bf42ec7253056bd66437df474feeeb98768bafcb..ed19576a241fb494bcf614efbfc6ef870abe30c7 100644 (file)
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -46,7 +46,7 @@
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -58,7 +58,7 @@
 
 ////
 
-/// info | "Информация"
+/// info | Информация
 
 Поддержка `Annotated` была добавлена в FastAPI начиная с версии 0.95.0 (и с этой версии рекомендуется использовать этот подход).
 
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
 
 ////
 
-/// note | "Примечание"
+/// note | Примечание
 
 Path-параметр всегда является обязательным, поскольку он составляет часть пути.
 
@@ -138,7 +138,7 @@ Path-параметр всегда является обязательным, п
 
 ## Задайте нужный вам порядок параметров
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Это не имеет большого значения, если вы используете `Annotated`.
 
@@ -160,7 +160,7 @@ Path-параметр всегда является обязательным, п
 
 //// tab | Python 3.8 без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -192,7 +192,7 @@ Path-параметр всегда является обязательным, п
 
 ## Задайте нужный вам порядок параметров, полезные приёмы
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Это не имеет большого значения, если вы используете `Annotated`.
 
@@ -261,7 +261,7 @@ Python не будет ничего делать с `*`, но он будет з
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -298,7 +298,7 @@ Python не будет ничего делать с `*`, но он будет з
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -338,7 +338,7 @@ Python не будет ничего делать с `*`, но он будет з
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -361,7 +361,7 @@ Python не будет ничего делать с `*`, но он будет з
 * `lt`: меньше (`l`ess `t`han)
 * `le`: меньше или равно (`l`ess than or `e`qual)
 
-/// info | "Информация"
+/// info | Информация
 
 `Query`, `Path` и другие классы, которые мы разберём позже, являются наследниками общего класса `Param`.
 
@@ -369,7 +369,7 @@ Python не будет ничего делать с `*`, но он будет з
 
 ///
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 `Query`, `Path` и другие "классы", которые вы импортируете из `fastapi`, на самом деле являются функциями, которые при вызове возвращают экземпляры одноимённых классов.
 
index d1d76cf7b0617defe2c5a142b4c5dfde69b6b45f..ba23ba5ea5f5179efad18dd0da674b81bcade65e 100644 (file)
@@ -24,7 +24,7 @@
 
 Здесь, `item_id` объявлен типом `int`.
 
-/// check | "Заметка"
+/// check | Заметка
 
 Это обеспечит поддержку редактора внутри функции (проверка ошибок, автодополнение и т.п.).
 
@@ -38,7 +38,7 @@
 {"item_id":3}
 ```
 
-/// check | "Заметка"
+/// check | Заметка
 
 Обратите внимание на значение `3`, которое получила (и вернула) функция. Это целочисленный Python `int`, а не строка `"3"`.
 
@@ -69,7 +69,7 @@
 
 Та же ошибка возникнет, если вместо `int` передать `float` , например: <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a>
 
-/// check | "Заметка"
+/// check | Заметка
 
 **FastAPI** обеспечивает проверку типов, используя всё те же определения типов.
 
@@ -85,7 +85,7 @@
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | "Заметка"
+/// check | Заметка
 
 Ещё раз, просто используя определения типов, **FastAPI** обеспечивает автоматическую интерактивную документацию (с интеграцией Swagger UI).
 
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 <a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">Перечисления (enum) доступны в Python</a> начиная с версии 3.4.
 
 ///
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Если интересно, то "AlexNet", "ResNet" и "LeNet" - это названия <abbr title="Технически, это архитектуры моделей глубокого обучения">моделей</abbr> машинного обучения.
 
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Значение `"lenet"` также можно получить с помощью `ModelName.lenet.value`.
 
@@ -254,7 +254,7 @@ OpenAPI не поддерживает способов объявления *п
 {!../../docs_src/path_params/tutorial004.py!}
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Возможно, вам понадобится, чтобы параметр содержал `/home/johndoe/myfile.txt` с ведущим слэшем (`/`).
 
index 0054af6ed40571613967169698b4e35f1d55e57d..f76570ce8cbe6084128e6e11e34c593268831139 100644 (file)
@@ -22,7 +22,7 @@
 
 Query-параметр `q` имеет тип `Union[str, None]` (или `str | None` в Python 3.10). Это означает, что входной параметр будет типа `str`, но может быть и `None`. Ещё параметр имеет значение по умолчанию `None`, из-за чего FastAPI определит параметр как необязательный.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 FastAPI определит параметр `q` как необязательный, потому что его значение по умолчанию `= None`.
 
@@ -143,7 +143,7 @@ q: Annotated[Union[str, None]] = None
 
 В предыдущих версиях FastAPI (ниже <abbr title="ранее 2023-03">0.95.0</abbr>) необходимо было использовать `Query` как значение по умолчанию для query-параметра. Так было вместо размещения его в `Annotated`, так что велика вероятность, что вам встретится такой код. Сейчас объясню.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 При написании нового кода и везде где это возможно, используйте `Annotated`, как было описано ранее. У этого способа есть несколько преимуществ (о них дальше) и никаких недостатков. 🍰
 
@@ -195,7 +195,7 @@ q: str | None = None
 
 Но он явно объявляет его как query-параметр.
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Запомните, важной частью объявления параметра как необязательного является:
 
@@ -291,7 +291,7 @@ q: str = Query(default="rick")
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -305,7 +305,7 @@ q: str = Query(default="rick")
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -347,7 +347,7 @@ q: str = Query(default="rick")
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -361,7 +361,7 @@ q: str = Query(default="rick")
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -407,7 +407,7 @@ q: str = Query(default="rick")
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -419,7 +419,7 @@ q: str = Query(default="rick")
 
 ////
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Наличие значения по умолчанию делает параметр необязательным.
 
@@ -477,7 +477,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -487,7 +487,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 {!> ../../docs_src/query_params_str_validations/tutorial006.py!}
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Обратите внимание, что даже когда `Query()` используется как значение по умолчанию для параметра функции, мы не передаём `default=None` в `Query()`.
 
@@ -519,7 +519,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -531,7 +531,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 
 ////
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Если вы ранее не сталкивались с `...`: это специальное значение, <a href="https://docs.python.org/3/library/constants.html#Ellipsis" class="external-link" target="_blank">часть языка Python и называется "Ellipsis"</a>.
 
@@ -573,7 +573,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -587,7 +587,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -599,7 +599,7 @@ q: Union[str, None] = Query(default=None, min_length=3)
 
 ////
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Pydantic, мощь которого используется в FastAPI для валидации и сериализации, имеет специальное поведение для `Optional` или `Union[Something, None]` без значения по умолчанию. Вы можете узнать об этом больше в документации Pydantic, раздел <a href="https://docs.pydantic.dev/latest/concepts/models/#required-optional-fields" class="external-link" target="_blank">Обязательные Опциональные поля</a>.
 
@@ -627,7 +627,7 @@ Pydantic, мощь которого используется в FastAPI для 
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -639,7 +639,7 @@ Pydantic, мощь которого используется в FastAPI для 
 
 ////
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Запомните, когда вам необходимо объявить query-параметр обязательным, вы можете просто не указывать параметр `default`. Таким образом, вам редко придётся использовать `...` или `Required`.
 
@@ -677,7 +677,7 @@ Pydantic, мощь которого используется в FastAPI для 
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -691,7 +691,7 @@ Pydantic, мощь которого используется в FastAPI для 
 
 //// tab | Python 3.9+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -705,7 +705,7 @@ Pydantic, мощь которого используется в FastAPI для 
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -736,7 +736,7 @@ http://localhost:8000/items/?q=foo&q=bar
 }
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Чтобы объявить query-параметр типом `list`, как в примере выше, вам нужно явно использовать `Query`, иначе он будет интерпретирован как тело запроса.
 
@@ -768,7 +768,7 @@ http://localhost:8000/items/?q=foo&q=bar
 
 //// tab | Python 3.9+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -782,7 +782,7 @@ http://localhost:8000/items/?q=foo&q=bar
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -833,7 +833,7 @@ http://localhost:8000/items/
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -845,7 +845,7 @@ http://localhost:8000/items/
 
 ////
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Запомните, что в таком случае, FastAPI не будет проверять содержимое списка.
 
@@ -859,7 +859,7 @@ http://localhost:8000/items/
 
 Указанная информация будет включена в генерируемую OpenAPI документацию и использована в пользовательском интерфейсе и внешних инструментах.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Имейте в виду, что разные инструменты могут иметь разные уровни поддержки OpenAPI.
 
@@ -895,7 +895,7 @@ http://localhost:8000/items/
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -909,7 +909,7 @@ http://localhost:8000/items/
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -949,7 +949,7 @@ http://localhost:8000/items/
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -963,7 +963,7 @@ http://localhost:8000/items/
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -1019,7 +1019,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -1033,7 +1033,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -1079,7 +1079,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -1093,7 +1093,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -1139,7 +1139,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
@@ -1153,7 +1153,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать версию с `Annotated` если возможно.
 
index edf06746b974f3d4d3359118b0e39b4ce5dc93a5..2c697224cdf1e6eed9a4ef4a4ed36769e8bc9de1 100644 (file)
@@ -81,7 +81,7 @@ http://127.0.0.1:8000/items/?skip=20
 
 В этом случае, параметр  `q` будет не обязательным и будет иметь значение `None` по умолчанию.
 
-/// check | "Важно"
+/// check | Важно
 
 Также обратите внимание, что **FastAPI** достаточно умён чтобы заметить, что параметр `item_id` является path-параметром, а `q` нет, поэтому, это параметр запроса.
 
@@ -240,7 +240,7 @@ http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
 * `skip`, типа `int` и со значением по умолчанию `0`.
 * `limit`, необязательный `int`.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вы можете использовать класс `Enum` также, как ранее применяли его с [Path-параметрами](path-params.md#_7){.internal-link target=_blank}.
 
index 34b9c94fa2835c7771e1996be98d2c0bf9558547..836d6efed602f41ca70b1210adc0cb7537d7f396 100644 (file)
@@ -2,7 +2,7 @@
 
 Используя класс `File`, мы можем позволить клиентам загружать файлы.
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Чтобы получать загруженные файлы, сначала установите <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
 
@@ -34,7 +34,7 @@
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -68,7 +68,7 @@
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -80,7 +80,7 @@
 
 ////
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 `File` - это класс, который наследуется непосредственно от `Form`.
 
@@ -88,7 +88,7 @@
 
 ///
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Для объявления тела файла необходимо использовать `File`, поскольку в противном случае параметры будут интерпретироваться как параметры запроса или параметры тела (JSON).
 
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -177,13 +177,13 @@ contents = await myfile.read()
 contents = myfile.file.read()
 ```
 
-/// note | "Технические детали `async`"
+/// note | Технические детали `async`
 
 При использовании методов `async` **FastAPI** запускает файловые методы в пуле потоков и ожидает их.
 
 ///
 
-/// note | "Технические детали Starlette"
+/// note | Технические детали Starlette
 
 **FastAPI** наследует `UploadFile` непосредственно из **Starlette**, но добавляет некоторые детали для совместимости с **Pydantic** и другими частями FastAPI.
 
@@ -195,7 +195,7 @@ contents = myfile.file.read()
 
 **FastAPI** позаботится о том, чтобы считать эти данные из нужного места, а не из JSON.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Данные из форм обычно кодируются с использованием "media type" `application/x-www-form-urlencoded` когда он не включает файлы.
 
@@ -205,7 +205,7 @@ contents = myfile.file.read()
 
 ///
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 В операции *функции операции пути* можно объявить несколько параметров `File` и `Form`, но нельзя также объявлять поля `Body`, которые предполагается получить в виде JSON, поскольку тело запроса будет закодировано с помощью `multipart/form-data`, а не `application/json`.
 
@@ -243,7 +243,7 @@ contents = myfile.file.read()
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -257,7 +257,7 @@ contents = myfile.file.read()
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -291,7 +291,7 @@ contents = myfile.file.read()
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -329,7 +329,7 @@ contents = myfile.file.read()
 
 //// tab | Python 3.9+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -343,7 +343,7 @@ contents = myfile.file.read()
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -357,7 +357,7 @@ contents = myfile.file.read()
 
 Вы получите, как и было объявлено, список `list` из `bytes` или `UploadFile`.
 
-/// note | "Technical Details"
+/// note | Technical Details
 
 Можно также использовать `from starlette.responses import HTMLResponse`.
 
@@ -387,7 +387,7 @@ contents = myfile.file.read()
 
 //// tab | Python 3.9+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -401,7 +401,7 @@ contents = myfile.file.read()
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
index 9b449bcd9bba7a1f75c6072ba50ca274a04ee940..fd98ec9538f9025bafdd175b68f19f5176523033 100644 (file)
@@ -2,7 +2,7 @@
 
 Вы можете определять файлы и поля формы одновременно, используя `File` и `Form`.
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Чтобы получать загруженные файлы и/или данные форм, сначала установите <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
 
@@ -30,7 +30,7 @@
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -64,7 +64,7 @@
 
 //// tab | Python 3.6+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -80,7 +80,7 @@
 
 Вы можете объявить некоторые файлы как `bytes`, а некоторые - как `UploadFile`.
 
-/// warning | "Внимание"
+/// warning | Внимание
 
 Вы можете объявить несколько параметров `File` и `Form` в операции *path*, но вы не можете также объявить поля `Body`, которые вы ожидаете получить в виде JSON, так как запрос будет иметь тело, закодированное с помощью `multipart/form-data` вместо `application/json`.
 
index 93b44437b2215080c808ff193a3cc789c2d459b8..cd17613de189056d3369972cf489b8b9a7bac6b3 100644 (file)
@@ -2,7 +2,7 @@
 
 Когда вам нужно получить поля формы вместо JSON, вы можете использовать `Form`.
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Чтобы использовать формы, сначала установите <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
 
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать 'Annotated' версию, если это возможно.
 
@@ -66,7 +66,7 @@
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Рекомендуется использовать 'Annotated' версию, если это возможно.
 
 
 Вы можете настроить `Form` точно так же, как настраиваете и  `Body` ( `Query`, `Path`, `Cookie`), включая валидации, примеры, псевдонимы (например, `user-name` вместо `username`) и т.д.
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 `Form` - это класс, который наследуется непосредственно от `Body`.
 
 ///
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Вам необходимо явно указывать параметр `Form` при объявлении каждого поля, иначе поля будут интерпретироваться как параметры запроса или параметры тела (JSON).
 
 
 **FastAPI** гарантирует правильное чтение этих данных из соответствующего места, а не из JSON.
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Данные из форм обычно кодируются с использованием "типа медиа" `application/x-www-form-urlencoded`.
 
 
 ///
 
-/// warning | "Предупреждение"
+/// warning | Предупреждение
 
 Вы можете объявлять несколько параметров `Form` в *операции пути*, но вы не можете одновременно с этим объявлять поля `Body`, которые вы ожидаете получить в виде JSON, так как запрос будет иметь тело, закодированное с использованием `application/x-www-form-urlencoded`, а не `application/json`.
 
index 363e64676ffe2cf1082a1beba64928176bab49f7..c55be38ef1501eae0c2797a5d81bf0a02bd2e96c 100644 (file)
@@ -83,7 +83,7 @@ FastAPI будет использовать этот возвращаемый т
 
 ////
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Помните, что параметр `response_model` является параметром именно декоратора http-методов (`get`, `post`, и т.п.). Не следует его указывать для *функций операций пути*, как вы бы поступили с другими параметрами или с телом запроса.
 
@@ -93,7 +93,7 @@ FastAPI будет использовать этот возвращаемый т
 
 FastAPI будет использовать значение `response_model` для того, чтобы автоматически генерировать документацию, производить валидацию и т.п. А также для **конвертации и фильтрации выходных данных** в объявленный тип.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Если вы используете анализаторы типов со строгой проверкой (например, mypy), можно указать `Any` в качестве типа возвращаемого значения функции.
 
@@ -129,7 +129,7 @@ FastAPI будет использовать значение `response_model` д
 
 ////
 
-/// info | "Информация"
+/// info | Информация
 
 Чтобы использовать `EmailStr`, прежде необходимо установить <a href="https://github.com/JoshData/python-email-validator" class="external-link" target="_blank">`email-validator`</a>.
 Используйте `pip install email-validator`
@@ -161,7 +161,7 @@ FastAPI будет использовать значение `response_model` д
 
 Но что если мы захотим использовать эту модель для какой-либо другой *операции пути*? Мы можем, сами того не желая, отправить пароль любому другому пользователю.
 
-/// danger | "Осторожно"
+/// danger | Осторожно
 
 Никогда не храните пароли пользователей в открытом виде, а также никогда не возвращайте их в ответе, как в примере выше. В противном случае - убедитесь, что вы хорошо продумали и учли все возможные риски такого подхода и вам известно, что вы делаете.
 
@@ -444,13 +444,13 @@ FastAPI совместно с Pydantic выполнит некоторую ма
 }
 ```
 
-/// info | "Информация"
+/// info | Информация
 
 "Под капотом" FastAPI использует метод `.dict()` у объектов моделей Pydantic <a href="https://docs.pydantic.dev/latest/concepts/serialization/#modeldict" class="external-link" target="_blank">с параметром `exclude_unset`</a>, чтобы достичь такого эффекта.
 
 ///
 
-/// info | "Информация"
+/// info | Информация
 
 Вы также можете использовать:
 
@@ -494,7 +494,7 @@ FastAPI достаточно умен (на самом деле, это засл
 
 И поэтому, они также будут включены в JSON ответа.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Значением по умолчанию может быть что угодно, не только `None`.
 
@@ -510,7 +510,7 @@ FastAPI достаточно умен (на самом деле, это засл
 
 Это можно использовать как быстрый способ исключить данные из ответа, не создавая отдельную модель Pydantic.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Но по-прежнему рекомендуется следовать изложенным выше советам и использовать несколько моделей вместо данных параметров.
 
@@ -536,7 +536,7 @@ FastAPI достаточно умен (на самом деле, это засл
 
 ////
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 При помощи кода `{"name","description"}` создается объект множества (`set`) с двумя строковыми значениями.
 
index 48808bea77cce5ab337ff70572e9529a77ee78b8..f08b15379533d2dea565207dea5650d9495dfdbf 100644 (file)
@@ -12,7 +12,7 @@
 {!../../docs_src/response_status_code/tutorial001.py!}
 ```
 
-/// note | "Примечание"
+/// note | Примечание
 
 Обратите внимание, что `status_code` является атрибутом метода-декоратора (`get`, `post` и т.д.), а не *функции-обработчика пути* в отличие от всех остальных параметров и тела запроса.
 
@@ -20,7 +20,7 @@
 
 Параметр `status_code` принимает число, обозначающее HTTP код статуса ответа.
 
-/// info | "Информация"
+/// info | Информация
 
 В качестве значения параметра `status_code` также может использоваться `IntEnum`, например, из библиотеки <a href="https://docs.python.org/3/library/http.html#http.HTTPStatus" class="external-link" target="_blank">`http.HTTPStatus`</a> в Python.
 
@@ -33,7 +33,7 @@
 
 <img src="/img/tutorial/response-status-code/image01.png">
 
-/// note | "Примечание"
+/// note | Примечание
 
 Некоторые коды статуса ответа (см. следующий раздел) указывают на то, что ответ не имеет тела.
 
@@ -43,7 +43,7 @@ FastAPI знает об этом и создаст документацию Open
 
 ## Об HTTP кодах статуса ответа
 
-/// note | "Примечание"
+/// note | Примечание
 
 Если вы уже знаете, что представляют собой HTTP коды статуса ответа, можете перейти к следующему разделу.
 
@@ -66,7 +66,7 @@ FastAPI знает об этом и создаст документацию Open
     * Для общих ошибок со стороны клиента можно просто использовать код `400`.
 * `5XX` – статус-коды, сообщающие о серверной ошибке. Они почти никогда не используются разработчиками напрямую. Когда что-то идет не так в какой-то части кода вашего приложения или на сервере, он автоматически вернёт один из 5XX кодов.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Чтобы узнать больше о HTTP кодах статуса и о том, для чего каждый из них предназначен, ознакомьтесь с <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" class="external-link" target="_blank">документацией <abbr title="Mozilla Developer Network">MDN</abbr> об HTTP кодах статуса ответа</a>.
 
@@ -94,7 +94,7 @@ FastAPI знает об этом и создаст документацию Open
 
 <img src="/img/tutorial/response-status-code/image02.png">
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Вы также можете использовать `from starlette import status` вместо `from fastapi import status`.
 
index c98ce2c60a0bb9db312f61b45af8ab6eeafbd9fa..484dfceff24ba510dd717f6901bcd99a83bb98c0 100644 (file)
@@ -38,7 +38,7 @@
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -52,7 +52,7 @@
 
 ## Запуск
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Вначале, установите библиотеку <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
 
@@ -82,7 +82,7 @@ $ uvicorn main:app --reload
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | "Кнопка авторизации!"
+/// check | Кнопка авторизации!
 
 У вас уже появилась новая кнопка "Authorize".
 
@@ -94,7 +94,7 @@ $ uvicorn main:app --reload
 
 <img src="/img/tutorial/security/image02.png">
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Неважно, что вы введете в форму, она пока не будет работать. Но мы к этому еще придем.
 
@@ -140,7 +140,7 @@ OAuth2 был разработан для того, чтобы бэкэнд ил
 
 В данном примере мы будем использовать **OAuth2**, с аутентификацией по паролю, используя токен **Bearer**. Для этого мы используем класс `OAuth2PasswordBearer`.
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Токен "bearer" - не единственный вариант, но для нашего случая он является наилучшим.
 
@@ -170,7 +170,7 @@ OAuth2 был разработан для того, чтобы бэкэнд ил
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -182,7 +182,7 @@ OAuth2 был разработан для того, чтобы бэкэнд ил
 
 ////
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Здесь `tokenUrl="token"` ссылается на относительный URL `token`, который мы еще не создали. Поскольку это относительный URL, он эквивалентен `./token`.
 
@@ -196,7 +196,7 @@ OAuth2 был разработан для того, чтобы бэкэнд ил
 
 Вскоре мы создадим и саму операцию пути.
 
-/// info | "Дополнительная информация"
+/// info | Дополнительная информация
 
 Если вы очень строгий "питонист", то вам может не понравиться стиль названия параметра `tokenUrl` вместо `token_url`.
 
@@ -236,7 +236,7 @@ oauth2_scheme(some, parameters)
 
 //// tab | Python 3.8+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Предпочтительнее использовать версию с аннотацией, если это возможно.
 
@@ -252,7 +252,7 @@ oauth2_scheme(some, parameters)
 
 **FastAPI** будет знать, что он может использовать эту зависимость для определения "схемы безопасности" в схеме OpenAPI (и автоматической документации по API).
 
-/// info | "Технические детали"
+/// info | Технические детали
 
 **FastAPI** будет знать, что он может использовать класс `OAuth2PasswordBearer` (объявленный в зависимости) для определения схемы безопасности в OpenAPI, поскольку он наследуется от `fastapi.security.oauth2.OAuth2`, который, в свою очередь, наследуется от `fastapi.security.base.SecurityBase`.
 
index bd512fde3c6fe9929ef9d35a1fbcff8822c2d9e4..e4969c4cf04c6a10e28c67f4f73426ff38294c0a 100644 (file)
@@ -32,7 +32,7 @@ OAuth2 включает в себя способы аутентификации
 
 OAuth2 не указывает, как шифровать сообщение, он ожидает, что ваше приложение будет обслуживаться по протоколу HTTPS.
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 В разделе **Развертывание** вы увидите [как настроить протокол HTTPS бесплатно, используя Traefik и Let's Encrypt.](https://fastapi.tiangolo.com/ru/deployment/https/)
 
@@ -89,7 +89,7 @@ OpenAPI может использовать следующие схемы авт
     * Это автоматическое обнаружение определено в спецификации OpenID Connect.
 
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Интеграция сторонних сервисов для аутентификации/авторизации таких как Google, Facebook, Twitter, GitHub и т.д. осуществляется достаточно легко.
 
index 4734554f30b731839ba02c6c1abf95fa5552db1e..0287fb01726b82815b21f4168228faae78ae0da4 100644 (file)
@@ -11,7 +11,7 @@
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Вы также можете использовать `from starlette.staticfiles import StaticFiles`.
 
index ae045bbbee5d133eeb36585702f2948f03a74062..0485ef8015e9fb4b2ac2980f4e8eecfa1e2aa58a 100644 (file)
@@ -8,7 +8,7 @@
 
 ## Использование класса `TestClient`
 
-/// info | "Информация"
+/// info | Информация
 
 Для использования класса `TestClient` необходимо установить библиотеку <a href="https://www.python-httpx.org" class="external-link" target="_blank">`httpx`</a>.
 
@@ -30,7 +30,7 @@
 {!../../docs_src/app_testing/tutorial001.py!}
 ```
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Обратите внимание, что тестирующая функция является обычной `def`, а не асинхронной `async def`.
 
@@ -40,7 +40,7 @@
 
 ///
 
-/// note | "Технические детали"
+/// note | Технические детали
 
 Также можно написать `from starlette.testclient import TestClient`.
 
@@ -48,7 +48,7 @@
 
 ///
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 Если для тестирования Вам, помимо запросов к приложению FastAPI, необходимо вызывать асинхронные функции (например, для подключения к базе данных с помощью асинхронного драйвера), то ознакомьтесь со страницей [Асинхронное тестирование](../advanced/async-tests.md){.internal-link target=_blank} в расширенном руководстве.
 
 
 //// tab | Python 3.10+ без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 По возможности используйте версию с `Annotated`.
 
 
 //// tab | Python 3.8+  без Annotated
 
-/// tip | "Подсказка"
+/// tip | Подсказка
 
 По возможности используйте версию с `Annotated`.
 
 
 Для получения дополнительной информации о передаче данных на бэкенд с помощью `httpx` или `TestClient` ознакомьтесь с <a href="https://www.python-httpx.org" class="external-link" target="_blank">документацией HTTPX</a>.
 
-/// info | "Информация"
+/// info | Информация
 
 Обратите внимание, что `TestClient` принимает данные, которые можно конвертировать в JSON, но не модели Pydantic.
 
index 6c057162e2f388661c634bd9a70a88bf9cd847c4..836e63c8ab44e1397b310726e96a67394507ce04 100644 (file)
@@ -6,7 +6,7 @@
 
 İlerleyen bölümlerde diğer seçenekler, konfigürasyonlar ve ek özellikleri göreceğiz.
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Sonraki bölümler **mutlaka "gelişmiş" olmak zorunda değildir**.
 
index 227674bd47e5a36ac181950ae343ecee8c6c9d62..709f74c7210b444e2b2d286c2e4f0ec96cefa003 100644 (file)
@@ -4,7 +4,7 @@
 
 [Tutorial - User Guide: Security](../../tutorial/security/index.md){.internal-link target=_blank} sayfasında ele alınanların dışında güvenlikle ilgili bazı ek özellikler vardır.
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Sonraki bölümler **mutlaka "gelişmiş" olmak zorunda değildir**.
 
index aa8a040d0e82871941d264d9cff6598c43f41f71..12b6ab60ff1d7d7ea9d3e358718f14b288851518 100644 (file)
@@ -8,7 +8,7 @@ Bu işlem için, `TestClient`'ı bir `with` ifadesinde kullanarak WebSocket'e ba
 {!../../docs_src/app_testing/tutorial002.py!}
 ```
 
-/// note | "Not"
+/// note | Not
 
 Daha fazla detay için Starlette'in <a href="https://www.starlette.io/staticfiles/" class="external-link" target="_blank">Websockets'i Test Etmek</a> dokümantasyonunu inceleyin.
 
index 286b7897a155a7fde8bff3cbea8dd28f7d00a298..c98b966b5d45d50dd4164e806deb4820c6f3a490 100644 (file)
@@ -30,13 +30,13 @@ Django REST framework'ü, Django'nun API kabiliyetlerini arttırmak için arka p
 
 **Otomatik API dökümantasyonu**nun ilk örneklerinden biri olduğu için, **FastAPI** arayışına ilham veren ilk fikirlerden biri oldu.
 
-/// note | "Not"
+/// note | Not
 
 Django REST Framework'ü, aynı zamanda **FastAPI**'ın dayandığı Starlette ve Uvicorn'un da yaratıcısı olan Tom Christie tarafından geliştirildi.
 
 ///
 
-/// check | "**FastAPI**'a nasıl ilham verdi?"
+/// check | **FastAPI**'a nasıl ilham verdi?
 
 Kullanıcılar için otomatik API dökümantasyonu sunan bir web arayüzüne sahip olmalı.
 
@@ -56,7 +56,7 @@ Uygulama parçalarının böyle ayrılıyor oluşu ve istenilen özelliklerle ge
 
 Flask'ın basitliği göz önünde bulundurulduğu zaman, API geliştirmek için iyi bir seçim gibi görünüyordu. Sıradaki şey ise Flask için bir "Django REST Framework"!
 
-/// check | "**FastAPI**'a nasıl ilham verdi?"
+/// check | **FastAPI**'a nasıl ilham verdi?
 
 Gereken araçları ve parçaları birleştirip eşleştirmeyi kolaylaştıracak bir mikro framework olmalı.
 
@@ -98,7 +98,7 @@ def read_url():
 
 `requests.get(...)` ile `@app.get(...)` arasındaki benzerliklere bakın.
 
-/// check | "**FastAPI**'a nasıl ilham verdi?"
+/// check | **FastAPI**'a nasıl ilham verdi?
 
 * Basit ve sezgisel bir API'ya sahip olmalı.
 * HTTP metot isimlerini (işlemlerini) anlaşılır olacak bir şekilde, direkt kullanmalı.
@@ -118,7 +118,7 @@ Swagger bir noktada Linux Foundation'a verildi ve adı OpenAPI olarak değiştir
 
 İşte bu yüzden versiyon 2.0 hakkında konuşurken "Swagger", versiyon 3 ve üzeri için ise "OpenAPI" adını kullanmak daha yaygın.
 
-/// check | "**FastAPI**'a nasıl ilham verdi?"
+/// check | **FastAPI**'a nasıl ilham verdi?
 
 API spesifikasyonları için özel bir şema yerine bir <abbr title="Open Standard: Açık Standart, Açık kaynak olarak yayınlanan standart">açık standart</abbr> benimseyip kullanmalı.
 
@@ -147,7 +147,7 @@ Marshmallow bu özellikleri sağlamak için geliştirilmişti. Benim de geçmiş
 
 Ama... Python'un tip belirteçleri gelmeden önce oluşturulmuştu. Yani her <abbr title="Verilerin nasıl oluşturulması gerektiğinin tanımı">şemayı</abbr> tanımlamak için Marshmallow'un sunduğu spesifik araçları ve sınıfları kullanmanız gerekiyordu.
 
-/// check | "**FastAPI**'a nasıl ilham verdi?"
+/// check | **FastAPI**'a nasıl ilham verdi?
 
 Kod kullanarak otomatik olarak veri tipini ve veri doğrulamayı belirten "şemalar" tanımlamalı.
 
@@ -163,13 +163,13 @@ Veri doğrulama için arka planda Marshmallow kullanıyor, hatta aynı geliştir
 
 Webargs da harika bir araç ve onu da geçmişte henüz **FastAPI** yokken çok kullandım.
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 Webargs aynı Marshmallow geliştirileri tarafından oluşturuldu.
 
 ///
 
-/// check | "**FastAPI**'a nasıl ilham verdi?"
+/// check | **FastAPI**'a nasıl ilham verdi?
 
 Gelen istek verisi için otomatik veri doğrulamaya sahip olmalı.
 
@@ -191,13 +191,13 @@ Fakat sonrasında yine mikro sözdizimi problemiyle karşılaşıyoruz. Python m
 
 Editör bu konuda pek yardımcı olamaz. Üstelik eğer parametreleri ya da Marshmallow şemalarını değiştirip YAML kodunu güncellemeyi unutursak artık döküman geçerliliğini yitiriyor.
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 APISpec de aynı Marshmallow geliştiricileri tarafından oluşturuldu.
 
 ///
 
-/// check | "**FastAPI**'a nasıl ilham verdi?"
+/// check | **FastAPI**'a nasıl ilham verdi?
 
 API'lar için açık standart desteği olmalı (OpenAPI gibi).
 
@@ -223,13 +223,13 @@ Bunu kullanmak, bir kaç <abbr title="full-stack: Hem ön uç hem de arka uç ge
 
 Aynı full-stack üreticiler [**FastAPI** Proje Üreticileri](project-generation.md){.internal-link target=_blank}'nin de temelini oluşturdu.
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 Flask-apispec de aynı Marshmallow geliştiricileri tarafından üretildi.
 
 ///
 
-/// check | "**FastAPI**'a nasıl ilham oldu?"
+/// check | **FastAPI**'a nasıl ilham oldu?
 
 Veri dönüşümü ve veri doğrulamayı tanımlayan kodu kullanarak otomatik olarak OpenAPI şeması oluşturmalı.
 
@@ -249,7 +249,7 @@ Ama TypeScript verileri kod JavaScript'e derlendikten sonra korunmadığından,
 
 İç içe geçen derin modelleri pek iyi işleyemiyor. Yani eğer istekteki JSON gövdesi derin bir JSON objesiyse düzgün bir şekilde dökümante edilip doğrulanamıyor.
 
-/// check | "**FastAPI**'a nasıl ilham oldu?"
+/// check | **FastAPI**'a nasıl ilham oldu?
 
 Güzel bir editör desteği için Python tiplerini kullanmalı.
 
@@ -261,7 +261,7 @@ Güçlü bir bağımlılık enjeksiyon sistemine sahip olmalı. Kod tekrarını
 
 Sanic, `asyncio`'ya dayanan son derece hızlı Python kütüphanelerinden biriydi. Flask'a epey benzeyecek şekilde geliştirilmişti.
 
-/// note | "Teknik detaylar"
+/// note | Teknik detaylar
 
 İçerisinde standart Python `asyncio` döngüsü yerine <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> kullanıldı. Hızının asıl kaynağı buydu.
 
@@ -269,7 +269,7 @@ Uvicorn ve Starlette'e ilham kaynağı olduğu oldukça açık, şu anda ikisi d
 
 ///
 
-/// check | "**FastAPI**'a nasıl ilham oldu?"
+/// check | **FastAPI**'a nasıl ilham oldu?
 
 Uçuk performans sağlayacak bir yol bulmalı.
 
@@ -285,7 +285,7 @@ Falcon ise bir diğer yüksek performanslı Python framework'ü. Minimal olacak
 
 Yani veri doğrulama, veri dönüştürme ve dökümantasyonun hepsi kodda yer almalı, otomatik halledemiyoruz. Ya da Falcon üzerine bir framework olarak uygulanmaları gerekiyor, aynı Hug'da olduğu gibi. Bu ayrım Falcon'un tasarımından esinlenen, istek ve cevap objelerini parametre olarak işleyen diğer kütüphanelerde de yer alıyor.
 
-/// check | "**FastAPI**'a nasıl ilham oldu?"
+/// check | **FastAPI**'a nasıl ilham oldu?
 
 Harika bir performans'a sahip olmanın yollarını bulmalı.
 
@@ -311,7 +311,7 @@ Biraz daha detaylı ayarlamalara gerek duyuyor. Ayrıca <abbr title="ASGI (Async
 
 <abbr title="Route: HTTP isteğinin gittiği yol">Yol</abbr>'lar fonksiyonun üstünde endpoint'i işleyen dekoratörler yerine farklı yerlerde tanımlanan fonksiyonlarla belirlenir. Bu Flask (ve Starlette) yerine daha çok Django'nun yaklaşımına daha yakın bir metot. Bu, kodda nispeten birbiriyle sıkı ilişkili olan şeyleri ayırmaya sebep oluyor.
 
-/// check | "**FastAPI**'a nasıl ilham oldu?"
+/// check | **FastAPI**'a nasıl ilham oldu?
 
 Model özelliklerinin "standart" değerlerini kullanarak veri tipleri için ekstra veri doğrulama koşulları tanımlamalı. Bu editör desteğini geliştiriyor ve daha önceden Pydantic'te yoktu.
 
@@ -333,13 +333,13 @@ Ayrıca ilginç ve çok rastlanmayan bir özelliği vardı: aynı framework'ü k
 
 Senkron çalışan Python web framework'lerinin standardına (WSGI) dayandığından dolayı Websocket'leri ve diğer şeyleri işleyemiyor, ancak yine de yüksek performansa sahip.
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 Hug, Python dosyalarında bulunan dahil etme satırlarını otomatik olarak sıralayan harika bir araç olan <a href="https://github.com/timothycrosley/isort" class="external-link" target="_blank">`isort`</a>'un geliştiricisi Timothy Crosley tarafından geliştirildi.
 
 ///
 
-/// check | "**FastAPI**'a nasıl ilham oldu?"
+/// check | **FastAPI**'a nasıl ilham oldu?
 
 Hug, APIStar'ın çeşitli kısımlarında esin kaynağı oldu ve APIStar'la birlikte en umut verici bulduğum araçlardan biriydi.
 
@@ -373,7 +373,7 @@ Geliştiricinin Starlette'e odaklanması gerekince proje de artık bir API web f
 
 Artık APIStar, OpenAPI özelliklerini doğrulamak için bir dizi araç sunan bir proje haline geldi.
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 APIStar, aşağıdaki projeleri de üreten Tom Christie tarafından geliştirildi:
 
@@ -383,7 +383,7 @@ APIStar, aşağıdaki projeleri de üreten Tom Christie tarafından geliştirild
 
 ///
 
-/// check | "**FastAPI**'a nasıl ilham oldu?"
+/// check | **FastAPI**'a nasıl ilham oldu?
 
 Var oldu.
 
@@ -407,7 +407,7 @@ Tip belirteçleri kullanıyor olması onu aşırı sezgisel yapıyor.
 
 Marshmallow ile karşılaştırılabilir. Ancak karşılaştırmalarda Marshmallowdan daha hızlı görünüyor. Aynı Python tip belirteçlerine dayanıyor ve editör desteği de harika.
 
-/// check | "**FastAPI** nerede kullanıyor?"
+/// check | **FastAPI** nerede kullanıyor?
 
 Bütün veri doğrulama, veri dönüştürme ve JSON Şemasına bağlı otomatik model dökümantasyonunu halletmek için!
 
@@ -442,7 +442,7 @@ Ancak otomatik veri doğrulama, veri dönüştürme ve dökümantasyon sağlamyo
 
 Bu, **FastAPI**'ın onun üzerine tamamen Python tip belirteçlerine bağlı olarak eklediği (Pydantic ile) ana şeylerden biri. **FastAPI** bunun yanında artı olarak bağımlılık enjeksiyonu sistemi, güvenlik araçları, OpenAPI şema üretimi ve benzeri özellikler de ekliyor.
 
-/// note | "Teknik Detaylar"
+/// note | Teknik Detaylar
 
 ASGI, Django'nun ana ekibi tarafından geliştirilen yeni bir "standart". Bir "Python standardı" (PEP) olma sürecinde fakat henüz bir standart değil.
 
@@ -450,7 +450,7 @@ Bununla birlikte, halihazırda birçok araç tarafından bir "standart" olarak k
 
 ///
 
-/// check | "**FastAPI** nerede kullanıyor?"
+/// check | **FastAPI** nerede kullanıyor?
 
 Tüm temel web kısımlarında üzerine özellikler eklenerek kullanılmakta.
 
@@ -468,7 +468,7 @@ Bir web framework'ünden ziyade bir sunucudur, yani yollara bağlı yönlendirme
 
 Starlette ve **FastAPI** için tavsiye edilen sunucu Uvicorndur.
 
-/// check | "**FastAPI** neden tavsiye ediyor?"
+/// check | **FastAPI** neden tavsiye ediyor?
 
 **FastAPI** uygulamalarını çalıştırmak için ana web sunucusu Uvicorn!
 
index 0d463a2f033896e8b4b62a64a2c9a9b659111e2c..558a79cb71017f5d1ca7361ea214fe423c595062 100644 (file)
@@ -21,7 +21,7 @@ async def read_results():
     return results
 ```
 
-/// note | "Not"
+/// note | Not
 
 Sadece `async def` ile tanımlanan fonksiyonlar içinde `await` kullanabilirsiniz.
 
index 798adca611ec122fba7b4107ed019d621c0ece67..26dd9026ced45797d32aebb682a90e828c3978e3 100644 (file)
@@ -6,7 +6,7 @@ Bu fikirlerin büyük bir kısmı aşağı yukarı **bağımsız** olacaktır, 
 
 Projeniz için ilginç ve yararlı görünen bir şey varsa devam edin ve inceleyin, aksi halde bunları atlayabilirsiniz.
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 **FastAPI**'ı düzgün (ve önerilen) şekilde öğrenmek istiyorsanız [Öğretici - Kullanıcı Rehberi](../tutorial/index.md){.internal-link target=_blank}'ni bölüm bölüm okuyun.
 
index 9584a57322aa7dd0e5e118e22408fde987f0cf08..308dfa6fbe3ca522dc0bc4bddbf666ac2436d08b 100644 (file)
@@ -12,7 +12,7 @@ Bu  pythonda tip belirteçleri için **hızlı bir başlangıç / bilgi tazeleme
 
 **FastAPI** kullanmayacak olsanız bile tür belirteçleri hakkında bilgi edinmenizde fayda var.
 
-/// note | "Not"
+/// note | Not
 
 Python uzmanıysanız ve tip belirteçleri ilgili her şeyi zaten biliyorsanız, sonraki bölüme geçin.
 
@@ -175,7 +175,7 @@ Liste, bazı dahili tipleri içeren bir tür olduğundan, bunları köşeli para
 {!../../docs_src/python_types/tutorial006.py!}
 ```
 
-/// tip | "Ipucu"
+/// tip | Ipucu
 
 Köşeli parantez içindeki bu dahili tiplere "tip parametreleri" denir.
 
index 895cf9b03250e9496abb63599e324e4d3f144816..56bcc0c865bc45141b88b4f17f14689bc3b5b5f5 100644 (file)
@@ -32,7 +32,7 @@
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
@@ -46,7 +46,7 @@ Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
@@ -90,7 +90,7 @@ Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
@@ -104,7 +104,7 @@ Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
@@ -116,7 +116,7 @@ Mümkün mertebe 'Annotated' sınıfını kullanmaya çalışın.
 
 ////
 
-/// note | "Teknik Detaylar"
+/// note | Teknik Detaylar
 
 `Cookie` sınıfı `Path` ve `Query` sınıflarının kardeşidir. Diğerleri gibi `Param` sınıfını miras alan bir sınıftır.
 
@@ -124,7 +124,7 @@ Ancak `fastapi`'dan projenize dahil ettiğiniz `Query`, `Path`, `Cookie` ve diğ
 
 ///
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 Çerez tanımlamak için `Cookie` sınıfını kullanmanız gerekmektedir, aksi taktirde parametreler sorgu parametreleri olarak yorumlanır.
 
index 335fcaeced3a767e715dbbbf7bda571fb6400c21..da90572040417522c464adc15e56e07c215f7490 100644 (file)
@@ -24,7 +24,7 @@ $ uvicorn main:app --reload
 
 </div>
 
-/// note | "Not"
+/// note | Not
 
 `uvicorn main:app` komutunu şu şekilde açıklayabiliriz:
 
@@ -139,7 +139,7 @@ Ayrıca, API'ınızla iletişim kuracak önyüz, mobil veya IoT uygulamaları gi
 
 `FastAPI`, API'niz için tüm işlevselliği sağlayan bir Python sınıfıdır.
 
-/// note | "Teknik Detaylar"
+/// note | Teknik Detaylar
 
 `FastAPI` doğrudan `Starlette`'i miras alan bir sınıftır.
 
@@ -205,7 +205,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 "Yol" genellikle "<abbr title="Endpoint: Bitim Noktası">endpoint</abbr>" veya "<abbr title="Route: Yönlendirme/Yön">route</abbr>" olarak adlandırılır.
 
@@ -259,7 +259,7 @@ Biz de onları "**operasyonlar**" olarak adlandıracağız.
 * <abbr title="Bir HTTP GET metodu"><code>get</code> operasyonu</abbr> ile
 * `/` yoluna gelen istekler
 
-/// info | "`@decorator` Bilgisi"
+/// info | `@decorator` Bilgisi
 
 Python'da `@something` sözdizimi "<abbr title="Decorator">dekoratör</abbr>" olarak adlandırılır.
 
@@ -286,7 +286,7 @@ Daha az kullanılanları da kullanabilirsiniz:
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Her işlemi (HTTP metod) istediğiniz gibi kullanmakta özgürsünüz.
 
@@ -324,7 +324,7 @@ Bu fonksiyonu `async def` yerine normal bir fonksiyon olarak da tanımlayabilirs
 {!../../docs_src/first_steps/tutorial003.py!}
 ```
 
-/// note | "Not"
+/// note | Not
 
 Eğer farkı bilmiyorsanız, [Async: *"Aceleniz mi var?"*](../async.md#in-a-hurry){.internal-link target=_blank} sayfasını kontrol edebilirsiniz.
 
index 9017d99abd37f3336291674fc4c74aae5ea6f5a9..c883c2f9fae79c0f566a67d8a573c87b762e8c46 100644 (file)
@@ -24,7 +24,7 @@ Standart Python tip belirteçlerini kullanarak yol parametresinin tipini fonksiy
 
 Bu durumda, `item_id` bir `int` olarak tanımlanacaktır.
 
-/// check | "Ek bilgi"
+/// check | Ek bilgi
 
 Bu sayede, fonksiyon içerisinde hata denetimi, kod tamamlama gibi konularda editör desteğine kavuşacaksınız.
 
@@ -38,7 +38,7 @@ Eğer bu örneği çalıştırıp tarayıcınızda <a href="http://127.0.0.1:800
 {"item_id":3}
 ```
 
-/// check | "Ek bilgi"
+/// check | Ek bilgi
 
 Dikkatinizi çekerim ki, fonksiyonunuzun aldığı (ve döndürdüğü) değer olan `3` bir string `"3"` değil aksine bir Python `int`'idir.
 
@@ -71,7 +71,7 @@ Eğer tarayıcınızda <a href="http://127.0.0.1:8000/items/foo" class="external
 
 Aynı hata <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a> sayfasında olduğu gibi `int` yerine `float` bir değer verseydik de ortaya çıkardı.
 
-/// check | "Ek bilgi"
+/// check | Ek bilgi
 
 Böylece, aynı Python tip tanımlaması ile birlikte, **FastAPI** veri doğrulama özelliği sağlar.
 
@@ -87,7 +87,7 @@ Ayrıca, tarayıcınızı <a href="http://127.0.0.1:8000/docs" class="external-l
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | "Ek bilgi"
+/// check | Ek bilgi
 
 Üstelik, sadece aynı Python tip tanımlaması ile, **FastAPI** size otomatik ve interaktif (Swagger UI ile entegre) bir dokümantasyon sağlar.
 
@@ -153,13 +153,13 @@ Sonrasında, sınıf içerisinde, mevcut ve geçerli değerler olacak olan sabit
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 3.4 sürümünden beri <a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">enumerationlar (ya da enumlar) Python'da mevcuttur</a>.
 
 ///
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Merak ediyorsanız söyleyeyim, "AlexNet", "ResNet" ve "LeNet" isimleri Makine Öğrenmesi <abbr title="Teknik olarak, Derin Öğrenme model mimarileri">modellerini</abbr> temsil eder.
 
@@ -199,7 +199,7 @@ Parametreyi, yarattığınız enum olan `ModelName` içerisindeki *enumeration 
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 `"lenet"` değerine `ModelName.lenet.value` tanımı ile de ulaşabilirsiniz.
 
@@ -256,7 +256,7 @@ Böylece şunun gibi bir kullanım yapabilirsiniz:
 {!../../docs_src/path_params/tutorial004.py!}
 ```
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Parametrenin başında `/home/johndoe/myfile.txt` yolunda olduğu gibi (`/`) işareti ile birlikte kullanmanız gerektiği durumlar olabilir.
 
index 886f5783f4e8cf2678eae424b9623079bcf6012b..b31d13be4935b502a47dada6b79a4e0edbc25d07 100644 (file)
@@ -81,7 +81,7 @@ Aynı şekilde, varsayılan değerlerini `None` olarak atayarak isteğe bağlı
 
 Bu durumda, `q` fonksiyon parametresi isteğe bağlı olacak ve varsayılan değer olarak `None` alacaktır.
 
-/// check | "Ek bilgi"
+/// check | Ek bilgi
 
 Ayrıca, dikkatinizi çekerim ki; **FastAPI**, `item_id` parametresinin bir yol parametresi olduğunu ve `q` parametresinin yol değil bir sorgu parametresi olduğunu fark edecek kadar beceriklidir.
 
@@ -242,7 +242,7 @@ Bu durumda, 3 tane sorgu parametresi var olacaktır:
 * `skip`, varsayılan değeri `0` olan bir `int`.
 * `limit`, isteğe bağlı bir `int`.
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Ayrıca, [Yol Parametrelerinde](path-params.md#on-tanml-degerler){.internal-link target=_blank} de kullanıldığı şekilde `Enum` sınıfından faydalanabilirsiniz.
 
index 19b6150ffa0c7f28487cf241f377cd7f065824c1..4ed8ac02138540b9c71e24021df1a3148ddb6dfd 100644 (file)
@@ -2,7 +2,7 @@
 
 İstek gövdesinde JSON verisi yerine form alanlarını karşılamanız gerketiğinde `Form` sınıfını kullanabilirsiniz.
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 Formları kullanmak için öncelikle <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a> paketini indirmeniz gerekmektedir.
 
@@ -84,13 +84,13 @@ Bu <abbr title="Spesifikasyon: Specification">spesifikasyon</abbr> form alanlar
 
 `Form` sınıfıyla tanımlama yaparken `Body`, `Query`, `Path` ve `Cookie` sınıflarında kullandığınız aynı validasyon, örnekler, isimlendirme (örneğin `username` yerine `user-name` kullanımı) ve daha fazla konfigurasyonu kullanabilirsiniz.
 
-/// info | "Bilgi"
+/// info | Bilgi
 
 `Form` doğrudan `Body` sınıfını miras alan bir sınıftır.
 
 ///
 
-/// tip | "İpucu"
+/// tip | İpucu
 
 Form gövdelerini tanımlamak için `Form` sınıfını kullanmanız gerekir; çünkü bu olmadan parametreler sorgu parametreleri veya gövde (JSON) parametreleri olarak yorumlanır.
 
@@ -102,7 +102,7 @@ HTML formlarının (`<form></form>`) verileri sunucuya gönderirken JSON'dan far
 
 **FastAPI** bu verilerin JSON yerine doğru şekilde okunmasını sağlayacaktır.
 
-/// note | "Teknik Detaylar"
+/// note | Teknik Detaylar
 
 Form verileri normalde `application/x-www-form-urlencoded` medya tipiyle kodlanır.
 
@@ -112,7 +112,7 @@ Form kodlama türleri ve form alanları hakkında daha fazla bilgi edinmek istiy
 
 ///
 
-/// warning | "Uyarı"
+/// warning | Uyarı
 
 *Yol operasyonları* içerisinde birden fazla `Form` parametresi tanımlayabilirsiniz ancak bunlarla birlikte JSON verisi kabul eden `Body` alanları tanımlayamazsınız çünkü bu durumda istek gövdesi `application/json` yerine `application/x-www-form-urlencoded` ile kodlanmış olur.
 
index 8bff59744e884fdeab21453578fec65481d5424b..da8bed86a21833cff58293847882e9ebeb69ad13 100644 (file)
@@ -11,7 +11,7 @@
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "Teknik Detaylar"
+/// note | Teknik Detaylar
 
 Projenize dahil etmek için `from starlette.staticfiles import StaticFiles` kullanabilirsiniz.
 
index 6821ffe705e2a379674957304b720f3c5d375b03..1acbe237af594feac0aeb4fb96e431cd7e37a5cf 100644 (file)
 
 Це був один із перших прикладів **автоматичної документації API**, і саме це була одна з перших ідей, яка надихнула на «пошук» **FastAPI**.
 
-/// note | "Примітка"
+/// note | Примітка
 
 Django REST Framework створив Том Крісті. Той самий творець Starlette і Uvicorn, на яких базується **FastAPI**.
 
 ///
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Мати автоматичний веб-інтерфейс документації API.
 
@@ -56,7 +56,7 @@ Flask — це «мікрофреймворк», він не включає ін
 
 Враховуючи простоту Flask, він здавався хорошим підходом для створення API. Наступним, що знайшов, був «Django REST Framework» для Flask.
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Бути мікрофреймоворком. Зробити легким комбінування та поєднання необхідних інструментів та частин.
 
@@ -98,7 +98,7 @@ def read_url():
 
 Зверніть увагу на схожість у `requests.get(...)` і `@app.get(...)`.
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 * Майте простий та інтуїтивно зрозумілий API.
  * Використовуйте імена (операції) методів HTTP безпосередньо, простим та інтуїтивно зрозумілим способом.
@@ -118,7 +118,7 @@ def read_url():
 
 Тому, коли говорять про версію 2.0, прийнято говорити «Swagger», а про версію 3+ «OpenAPI».
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Прийняти і використовувати відкритий стандарт для специфікацій API замість спеціальної схеми.
 
@@ -147,7 +147,7 @@ Marshmallow створено для забезпечення цих функці
 
 Але він був створений до того, як існували підказки типу Python. Отже, щоб визначити кожну <abbr title="визначення того, як дані повинні бути сформовані">схему</abbr>, вам потрібно використовувати спеціальні утиліти та класи, надані Marshmallow.
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Використовувати код для автоматичного визначення "схем", які надають типи даних і перевірку.
 
@@ -163,13 +163,13 @@ Webargs — це інструмент, створений, щоб забезпе
 
 Це чудовий інструмент, і я також часто використовував його, перш ніж створити **FastAPI**.
 
-/// info | "Інформація"
+/// info | Інформація
 
 Webargs був створений тими ж розробниками Marshmallow.
 
 ///
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Мати автоматичну перевірку даних вхідного запиту.
 
@@ -193,13 +193,13 @@ Marshmallow і Webargs забезпечують перевірку, аналіз
 
 Редактор тут нічим не може допомогти. І якщо ми змінимо параметри чи схеми Marshmallow і забудемо також змінити цю строку документа YAML, згенерована схема буде застарілою.
 
-/// info | "Інформація"
+/// info | Інформація
 
 APISpec був створений тими ж розробниками Marshmallow.
 
 ///
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Підтримувати відкритий стандарт API, OpenAPI.
 
@@ -225,13 +225,13 @@ APISpec був створений тими ж розробниками Marshmall
 
 І ці самі генератори повного стеку були основою [**FastAPI** генераторів проектів](project-generation.md){.internal-link target=_blank}.
 
-/// info | "Інформація"
+/// info | Інформація
 
 Flask-apispec був створений тими ж розробниками Marshmallow.
 
 ///
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Створення схеми OpenAPI автоматично з того самого коду, який визначає серіалізацію та перевірку.
 
@@ -251,7 +251,7 @@ Flask-apispec був створений тими ж розробниками Mar
 
 Він не дуже добре обробляє вкладені моделі. Отже, якщо тіло JSON у запиті є об’єктом JSON із внутрішніми полями, які, у свою чергу, є вкладеними об’єктами JSON, його неможливо належним чином задокументувати та перевірити.
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Використовувати типи Python, щоб мати чудову підтримку редактора.
 
@@ -263,7 +263,7 @@ Flask-apispec був створений тими ж розробниками Mar
 
 Це був один із перших надзвичайно швидких фреймворків Python на основі `asyncio`. Він був дуже схожий на Flask.
 
-/// note | "Технічні деталі"
+/// note | Технічні деталі
 
 Він використовував <a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a> замість стандартного циклу Python `asyncio`. Ось що зробило його таким швидким.
 
@@ -271,7 +271,7 @@ Flask-apispec був створений тими ж розробниками Mar
 
 ///
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Знайти спосіб отримати божевільну продуктивність.
 
@@ -287,7 +287,7 @@ Falcon — ще один високопродуктивний фреймворк
 
 Таким чином, перевірка даних, серіалізація та документація повинні виконуватися в коді, а не автоматично. Або вони повинні бути реалізовані як фреймворк поверх Falcon, як Hug. Така сама відмінність спостерігається в інших фреймворках, натхненних дизайном Falcon, що мають один об’єкт запиту та один об’єкт відповіді як параметри.
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Знайти способи отримати чудову продуктивність.
 
@@ -313,7 +313,7 @@ Falcon — ще один високопродуктивний фреймворк
 
 Маршрути оголошуються в одному місці з використанням функцій, оголошених в інших місцях (замість використання декораторів, які можна розмістити безпосередньо поверх функції, яка обробляє кінцеву точку). Це ближче до того, як це робить Django, ніж до Flask (і Starlette). Він розділяє в коді речі, які відносно тісно пов’язані.
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Визначити додаткові перевірки для типів даних, використовуючи значення "за замовчуванням" атрибутів моделі. Це покращує підтримку редактора, а раніше вона була недоступна в Pydantic.
 
@@ -335,13 +335,13 @@ Hug був одним із перших фреймворків, який реа
 
 Оскільки він заснований на попередньому стандарті для синхронних веб-фреймворків Python (WSGI), він не може працювати з Websockets та іншими речами, хоча він також має високу продуктивність.
 
-/// info | "Інформація"
+/// info | Інформація
 
 Hug створив Тімоті Крослі, той самий творець <a href="https://github.com/timothycrosley/isort" class="external-link" target="_blank">`isort`</a>, чудовий інструмент для автоматичного сортування імпорту у файлах Python.
 
 ///
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Hug надихнув частину APIStar і був одним із найбільш перспективних інструментів, поряд із APIStar.
 
@@ -375,7 +375,7 @@ Hug надихнув частину APIStar і був одним із найбі
 
 Тепер APIStar — це набір інструментів для перевірки специфікацій OpenAPI, а не веб-фреймворк.
 
-/// info | "Інформація"
+/// info | Інформація
 
 APIStar створив Том Крісті. Той самий хлопець, який створив:
 
@@ -385,7 +385,7 @@ APIStar створив Том Крісті. Той самий хлопець, я
 
 ///
 
-/// check | "Надихнуло **FastAPI** на"
+/// check | Надихнуло **FastAPI** на
 
 Існувати.
 
@@ -407,7 +407,7 @@ Pydantic — це бібліотека для визначення переві
 
 Його можна порівняти з Marshmallow. Хоча він швидший за Marshmallow у тестах. Оскільки він базується на тих самих підказках типу Python, підтримка редактора чудова.
 
-/// check | "**FastAPI** використовує його для"
+/// check | **FastAPI** використовує його для
 
 Виконання перевірки всіх даних, серіалізації даних і автоматичної документацію моделі (на основі схеми JSON).
 
@@ -442,7 +442,7 @@ Starlette надає всі основні функції веб-мікрофр
 
 Це одна з головних речей, які **FastAPI** додає зверху, все на основі підказок типу Python (з використанням Pydantic). Це, а також система впровадження залежностей, утиліти безпеки, створення схеми OpenAPI тощо.
 
-/// note | "Технічні деталі"
+/// note | Технічні деталі
 
 ASGI — це новий «стандарт», який розробляється членами основної команди Django. Це ще не «стандарт Python» (PEP), хоча вони в процесі цього.
 
@@ -450,7 +450,7 @@ ASGI — це новий «стандарт», який розробляєтьс
 
 ///
 
-/// check | "**FastAPI** використовує його для"
+/// check | **FastAPI** використовує його для
 
 Керування всіма основними веб-частинами. Додавання функцій зверху.
 
@@ -468,7 +468,7 @@ Uvicorn — це блискавичний сервер ASGI, побудован
 
 Це рекомендований сервер для Starlette і **FastAPI**.
 
-/// check | "**FastAPI** рекомендує це як"
+/// check | **FastAPI** рекомендує це як
 
 Основний веб-сервер для запуску програм **FastAPI**.
 
index b1f6459321a4492af361e5e2d2ee1429a484f9e2..c286744a8e8a04bad5049206aa3029a8f10fb5e5 100644 (file)
 
 `Field` працює так само, як `Query`, `Path` і `Body`, у нього такі самі параметри тощо.
 
-/// note | "Технічні деталі"
+/// note | Технічні деталі
 
 Насправді, `Query`, `Path` та інші, що ви побачите далі, створюють об'єкти підкласів загального класу `Param`, котрий сам є підкласом класу `FieldInfo` з Pydantic.
 
index 40ca4f6e6c76ff192237f7dbb391544d1a806591..229f81b63ac0fee36f82b93f94756d7f9cd7cb58 100644 (file)
 
 ////
 
-/// note | "Технічні Деталі"
+/// note | Технічні Деталі
 
 `Cookie` це "сестра" класів `Path` і `Query`. Вони наслідуються від одного батьківського класу `Param`.
 Але пам'ятайте, що коли ви імпортуєте `Query`, `Path`, `Cookie` та інше з `fastapi`, це фактично функції, що повертають спеціальні класи.
index 39dca9be8b2352ba08ef8a337ae65d7b7cbefd2d..77b0baf4d2f48c0a35dbad4422ca16dff4159a9d 100644 (file)
@@ -42,7 +42,7 @@
 
 Вона не повертає велику строку `str`, яка містить дані у форматі JSON (як строка). Вона повертає стандартну структуру даних Python (наприклад `dict`) із значеннями та підзначеннями, які є сумісними з JSON.
 
-/// note | "Примітка"
+/// note | Примітка
 
 `jsonable_encoder` фактично використовується **FastAPI** внутрішньо для перетворення даних. Проте вона корисна в багатьох інших сценаріях.
 
index 6f79c0d1d69928f1a6a040b61da671d4b9ad422c..63fec207d03f7f5dff293827e7391d8773a777c1 100644 (file)
@@ -163,7 +163,7 @@ OpenAPI описує схему для вашого API. І ця схема вк
 
 `FastAPI` це клас у Python, який надає всю функціональність для API.
 
-/// note | "Технічні деталі"
+/// note | Технічні деталі
 
 `FastAPI` це клас, який успадковується безпосередньо від `Starlette`.
 
@@ -198,7 +198,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | "Додаткова інформація"
+/// info | Додаткова інформація
 
 "Шлях" (path) також зазвичай називають "ендпоінтом" (endpoint) або "маршрутом" (route).
 
@@ -250,7 +250,7 @@ https://example.com/items/foo
 * шлях `/`
 * використовуючи <abbr title="an HTTP GET method"><code>get</code> операцію</abbr>
 
-/// info | "`@decorator` Додаткова інформація"
+/// info | `@decorator` Додаткова інформація
 
 Синтаксис `@something` у Python називається "декоратором".
 
@@ -277,7 +277,7 @@ https://example.com/items/foo
 * `@app.patch()`
 * `@app.trace()`
 
-/// tip | "Порада"
+/// tip | Порада
 
 Ви можете використовувати кожну операцію (HTTP-метод) на свій розсуд.
 
@@ -315,7 +315,7 @@ FastAPI викликатиме її щоразу, коли отримає зап
 {!../../docs_src/first_steps/tutorial003.py!}
 ```
 
-/// note | "Примітка"
+/// note | Примітка
 
 Якщо не знаєте в чому різниця, подивіться [Конкурентність: *"Поспішаєш?"*](../async.md#in-a-hurry){.internal-link target=_blank}.
 
index d80d78506827d24ce3573a4ab24049d6634e26ff..934527b8edea44259723b94820fd09fff6c283ea 100644 (file)
@@ -139,7 +139,7 @@ Bạn cũng có thể sử dụng nó để sinh code tự động, với các c
 
 `FastAPI` là một Python class cung cấp tất cả chức năng cho API của bạn.
 
-/// note | "Chi tiết kĩ thuật"
+/// note | Chi tiết kĩ thuật
 
 `FastAPI` là một class kế thừa trực tiếp `Starlette`.
 
index f79b853ef8353f4123ab8d37e28090105738a969..b8f9b083778a927b70454df2cea79c39dbf9e3ee 100644 (file)
@@ -18,7 +18,7 @@
 {!../../docs_src/additional_status_codes/tutorial001.py!}
 ```
 
-/// warning | "警告"
+/// warning | 警告
 
 当你直接返回一个像上面例子中的 `Response` 对象时,它会直接返回。
 
@@ -28,7 +28,7 @@ FastAPI 不会用模型等对该响应进行序列化。
 
 ///
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以使用 `from starlette.responses import JSONResponse`。 
 
index f3fe1e395d834cfebc97f8ca9aa50c8b4f67a0a5..bd37ecebb275b7b8ea227ee13cc0fc5ee0ff6393 100644 (file)
@@ -60,7 +60,7 @@ checker(q="somequery")
 {!../../docs_src/dependencies/tutorial011.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 本章示例有些刻意,也看不出有什么用处。
 
index 8c4b6bb0417dd6c3b183ef612f8ff9b5d8b46b6d..5ed6baa82c3dd136b329f5fb31dae163811971e1 100644 (file)
@@ -37,7 +37,7 @@ browser --> proxy
 proxy --> server
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 IP `0.0.0.0` 常用于指程序监听本机或服务器上的所有有效 IP。
 
@@ -78,7 +78,7 @@ $ uvicorn main:app --root-path /api/v1
 
 Hypercorn 也支持 `--root-path `选项。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 ASGI 规范定义的 `root_path` 就是为了这种用例。
 
@@ -172,7 +172,7 @@ Uvicorn 预期代理在 `http://127.0.0.1:8000/app` 访问 Uvicorn,而在顶
 
 这个文件把 Traefik 监听端口设置为 `9999`,并设置要使用另一个文件 `routes.toml`。
 
-/// tip | "提示"
+/// tip | 提示
 
 使用端口 9999 代替标准的 HTTP 端口 80,这样就不必使用管理员权限运行(`sudo`)。
 
@@ -242,7 +242,7 @@ $ uvicorn main:app --root-path /api/v1
 }
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,就算访问 `http://127.0.0.1:8000/app`,也显示从选项 `--root-path` 中提取的 `/api/v1`,这是 `root_path` 的值。
 
@@ -289,7 +289,7 @@ $ uvicorn main:app --root-path /api/v1
 
 ## 附加的服务器
 
-/// warning | "警告"
+/// warning | 警告
 
 此用例较难,可以跳过。
 
@@ -332,7 +332,7 @@ $ uvicorn main:app --root-path /api/v1
 }
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,自动生成服务器时,`url` 的值 `/api/v1` 提取自 `roog_path`。
 
@@ -342,7 +342,7 @@ $ uvicorn main:app --root-path /api/v1
 
 <img src="/img/tutorial/behind-a-proxy/image03.png">
 
-/// tip | "提示"
+/// tip | 提示
 
 API 文档与所选的服务器进行交互。
 
index 27c026904da730f24d4bf04fd166f0dac5bbd340..85ca1d06db27421ca97977b285e94ea5d1e99004 100644 (file)
@@ -12,7 +12,7 @@
 
 并且如果该 `Response` 有一个 JSON 媒体类型(`application/json`),比如使用 `JSONResponse` 或者 `UJSONResponse` 的时候,返回的数据将使用你在路径操作装饰器中声明的任何 Pydantic 的 `response_model` 自动转换(和过滤)。
 
-/// note | "说明"
+/// note | 说明
 
 如果你使用不带有任何媒体类型的响应类,FastAPI 认为你的响应没有任何内容,所以不会在生成的OpenAPI文档中记录响应格式。
 
@@ -28,7 +28,7 @@
 {!../../docs_src/custom_response/tutorial001b.py!}
 ```
 
-/// info | "提示"
+/// info | 提示
 
 参数 `response_class` 也会用来定义响应的「媒体类型」。
 
@@ -38,7 +38,7 @@
 
 ///
 
-/// tip | "小贴士"
+/// tip | 小贴士
 
 `ORJSONResponse` 目前只在 FastAPI 中可用,而在 Starlette 中不可用。
 
@@ -55,7 +55,7 @@
 {!../../docs_src/custom_response/tutorial002.py!}
 ```
 
-/// info | "提示"
+/// info | 提示
 
 参数 `response_class` 也会用来定义响应的「媒体类型」。
 
 {!../../docs_src/custom_response/tutorial003.py!}
 ```
 
-/// warning | "警告"
+/// warning | 警告
 
 *路径操作函数* 直接返回的 `Response` 不会被 OpenAPI 的文档记录(比如,`Content-Type` 不会被文档记录),并且在自动化交互文档中也是不可见的。
 
 ///
 
-/// info | "提示"
+/// info | 提示
 
 当然,实际的 `Content-Type` 头,状态码等等,将来自于你返回的 `Response` 对象。
 
 
 要记得你可以使用 `Response` 来返回任何其他东西,甚至创建一个自定义的子类。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以使用 `from starlette.responses import HTMLResponse`。
 
@@ -170,7 +170,7 @@ FastAPI(实际上是 Starlette)将自动包含 Content-Length 的头。它
 
 `UJSONResponse` 是一个使用 <a href="https://github.com/ultrajson/ultrajson" class="external-link" target="_blank">`ujson`</a> 的可选 JSON 响应。
 
-/// warning | "警告"
+/// warning | 警告
 
 在处理某些边缘情况时,`ujson` 不如 Python 的内置实现那么谨慎。
 
@@ -180,7 +180,7 @@ FastAPI(实际上是 Starlette)将自动包含 Content-Length 的头。它
 {!../../docs_src/custom_response/tutorial001.py!}
 ```
 
-/// tip | "小贴士"
+/// tip | 小贴士
 
 `ORJSONResponse` 可能是一个更快的选择。
 
@@ -212,7 +212,7 @@ FastAPI(实际上是 Starlette)将自动包含 Content-Length 的头。它
 {!../../docs_src/custom_response/tutorial008.py!}
 ```
 
-/// tip | "小贴士"
+/// tip | 小贴士
 
 注意在这里,因为我们使用的是不支持 `async` 和 `await` 的标准 `open()`,我们使用普通的 `def` 声明了路径操作。
 
index f33c05ff47f53f75fcf87571c01457a818120627..7d977a0c7a2bb3513edd1077b9fae9387cc66778 100644 (file)
@@ -20,7 +20,7 @@ FastAPI 基于 **Pydantic** 构建,前文已经介绍过如何使用 Pydantic
 
 数据类的和运作方式与 Pydantic 模型相同。实际上,它的底层使用的也是 Pydantic。
 
-/// info | "说明"
+/// info | 说明
 
 注意,数据类不支持 Pydantic 模型的所有功能。
 
index e5b44f32175b09d4c0f76e111d311d115ade6c7b..a34c03f3fff5a9feeecce70d856d591de139c901 100644 (file)
@@ -4,7 +4,7 @@
 
 事件函数既可以声明为异步函数(`async def`),也可以声明为普通函数(`def`)。
 
-/// warning | "警告"
+/// warning | 警告
 
 **FastAPI** 只执行主应用中的事件处理器,不执行[子应用 - 挂载](sub-applications.md){.internal-link target=_blank}中的事件处理器。
 
 
 此处,`shutdown` 事件处理器函数在 `log.txt` 中写入一行文本 `Application shutdown`。
 
-/// info | "说明"
+/// info | 说明
 
 `open()` 函数中,`mode="a"` 指的是**追加**。因此这行文本会添加在文件已有内容之后,不会覆盖之前的内容。
 
 ///
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,本例使用 Python `open()` 标准函数与文件交互。
 
@@ -52,7 +52,7 @@
 
 ///
 
-/// info | "说明"
+/// info | 说明
 
 有关事件处理器的详情,请参阅 <a href="https://www.starlette.io/events/" class="external-link" target="_blank">Starlette 官档 - 事件</a>。
 
index 525dc89ac5f20fa6c529e443bd4508ca467560b2..78a7d559c8630a17008fd675d3d9443b9d4e32c8 100644 (file)
@@ -43,7 +43,7 @@ app.add_middleware(UnicornMiddleware, some_config="rainbow")
 
 **FastAPI** 为常见用例提供了一些中间件,下面介绍怎么使用这些中间件。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 以下几个示例中也可以使用 `from starlette.middleware.something import SomethingMiddleware`。
 
index dc1c2539ba45f10cd338d60cd55fd073a669105f..601cbdb5d3fb7ef986ae9ede647b9fb8052a8d89 100644 (file)
@@ -35,7 +35,7 @@ API 的用户 (外部开发者)要在您的 API 内使用 POST 请求创建
 {!../../docs_src/openapi_callbacks/tutorial001.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 `callback_url` 查询参数使用 Pydantic 的 <a href="https://pydantic-docs.helpmanual.io/usage/types/#urls" class="external-link" target="_blank">URL</a> 类型。
 
@@ -64,7 +64,7 @@ requests.post(callback_url, json={"description": "Invoice paid", "paid": True})
 
 本例没有实现回调本身(只是一行代码),只有文档部分。
 
-/// tip | "提示"
+/// tip | 提示
 
 实际的回调只是 HTTP 请求。
 
@@ -80,7 +80,7 @@ requests.post(callback_url, json={"description": "Invoice paid", "paid": True})
 
 我们要使用与存档*外部 API* 相同的知识……通过创建外部 API 要实现的*路径操作*(您的 API 要调用的)。
 
-/// tip | "提示"
+/// tip | 提示
 
 编写存档回调的代码时,假设您是*外部开发者*可能会用的上。并且您当前正在实现的是*外部 API*,不是*您自己的 API*。
 
@@ -163,7 +163,7 @@ JSON 请求体包含如下内容:
 }
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,回调 URL包含 `callback_url` (`https://www.external.org/events`)中的查询参数,还有 JSON 请求体内部的发票 ID(`2expen51ve`)。
 
@@ -179,7 +179,7 @@ JSON 请求体包含如下内容:
 {!../../docs_src/openapi_callbacks/tutorial001.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,不能把路由本身(`invoices_callback_router`)传递给 `callback=`,要传递 `invoices_callback_router.routes` 中的 `.routes` 属性。
 
index 5772664b0302e65add540bee91ef1f0375582646..2d56c6e9bd8ffa2a303181d65afc48decaa0fbfb 100644 (file)
@@ -40,7 +40,7 @@
 
 ### 更多信息
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以使用`from starlette.responses import Response` 或者 `from starlette.responses import JSONResponse`。
 
index 9d191c62239b0006f343bb448eaef322793ec6dd..934f60ef63dc07a621ad4316bfcca1af74ed3f7a 100644 (file)
@@ -14,7 +14,7 @@
 
 事实上,你可以返回任意 `Response` 或者任意 `Response` 的子类。
 
-/// tip | "小贴士"
+/// tip | 小贴士
 
 `JSONResponse` 本身是一个 `Response` 的子类。
 
@@ -39,7 +39,7 @@
 {!../../docs_src/response_directly/tutorial001.py!}
 ```
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以使用 `from starlette.responses import JSONResponse`。
 
index d593fdccc0dc3b3e472eeb14f52782b8682e2c95..e7861ad0c9ee20918980bda5313a75ec90a74574 100644 (file)
@@ -25,7 +25,7 @@
 ```
 
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以使用`from starlette.responses import Response`或`from starlette.responses import JSONResponse`。
 
index 836086ae273bfb83b27213cfb0effe293972dec4..267e7ced7078c5468a88f85df4dae8f850132a24 100644 (file)
@@ -4,7 +4,7 @@
 
 除 [教程 - 用户指南: 安全性](../../tutorial/security/index.md){.internal-link target=_blank} 中涵盖的功能之外,还有一些额外的功能来处理安全性.
 
-/// tip | "小贴士"
+/// tip | 小贴士
 
 接下来的章节 **并不一定是 "高级的"**.
 
index d6354230e797f512ebe9d18bfed270bbd9dc81a5..b26522113a50afe73a870a5b9be943c04e5292a0 100644 (file)
@@ -10,7 +10,7 @@ OAuth2 也是脸书、谷歌、GitHub、微软、推特等第三方身份验证
 
 本章介绍如何在 **FastAPI** 应用中使用 OAuth2 作用域管理验证与授权。
 
-/// warning | "警告"
+/// warning | 警告
 
 本章内容较难,刚接触 FastAPI 的新手可以跳过。
 
@@ -46,7 +46,7 @@ OpenAPI 中(例如 API 文档)可以定义**安全方案**。
 * 脸书和 Instagram 使用 `instagram_basic`
 * 谷歌使用 `https://www.googleapis.com/auth/drive`
 
-/// info | "说明"
+/// info | 说明
 
 OAuth2 中,**作用域**只是声明特定权限的字符串。
 
@@ -94,7 +94,7 @@ OAuth2 中,**作用域**只是声明特定权限的字符串。
 
 这样,返回的 JWT 令牌中就包含了作用域。
 
-/// danger | "危险"
+/// danger | 危险
 
 为了简明起见,本例把接收的作用域直接添加到了令牌里。
 
@@ -122,7 +122,7 @@ OAuth2 中,**作用域**只是声明特定权限的字符串。
 
 本例要求使用作用域 `me`(还可以使用更多作用域)。
 
-/// note | "笔记"
+/// note | 笔记
 
 不必在不同位置添加不同的作用域。
 
@@ -134,7 +134,7 @@ OAuth2 中,**作用域**只是声明特定权限的字符串。
 {!../../docs_src/security/tutorial005.py!}
 ```
 
-/// info | "技术细节"
+/// info | 技术细节
 
 `Security` 实际上是 `Depends` 的子类,而且只比 `Depends` 多一个参数。
 
@@ -231,7 +231,7 @@ OAuth2 中,**作用域**只是声明特定权限的字符串。
                             * `security_scopes.scopes` 包含*路径操作* `read_users_me` 的 `["me"]`,因为它在依赖项里被声明
                             * `security_scopes.scopes` 包含用于*路径操作* `read_system_status` 的 `[]`(空列表),并且它的依赖项 `get_current_user` 也没有声明任何 `scope`
 
-/// tip | "提示"
+/// tip | 提示
 
 此处重要且**神奇**的事情是,`get_current_user` 检查每个*路径操作*时可以使用不同的 `scopes` 列表。
 
@@ -275,7 +275,7 @@ OAuth2 中,**作用域**只是声明特定权限的字符串。
 
 最安全的是代码流,但实现起来更复杂,而且需要更多步骤。因为它更复杂,很多第三方身份验证应用最终建议使用隐式流。
 
-/// note | "笔记"
+/// note | 笔记
 
 每个身份验证应用都会采用不同方式会命名流,以便融合入自己的品牌。
 
index 1159302a93ccd4de17c8339afedeb761d8bad239..7692aa47b780173e772662afee4f9903e5f006a2 100644 (file)
@@ -31,20 +31,20 @@ $ pip install jinja2
 {!../../docs_src/templates/tutorial001.py!}
 ```
 
-/// note | "笔记"
+/// note | 笔记
 
 在FastAPI 0.108.0,Starlette 0.29.0之前,`name`是第一个参数。
 并且,在此之前,`request`对象是作为context的一部分以键值对的形式传递的。
 
 ///
 
-/// tip | "提示"
+/// tip | 提示
 
 通过声明 `response_class=HTMLResponse`,API 文档就能识别响应的对象是 HTML。
 
 ///
 
-/// note | "技术细节"
+/// note | 技术细节
 
 您还可以使用 `from starlette.templating import Jinja2Templates`。
 
index c3d912e2f68a19b088b7de77935d312a4db12a18..b4b5b32dfdd0e3823064fbba6e2c2cd93696158e 100644 (file)
@@ -32,7 +32,7 @@
 {!../../docs_src/dependency_testing/tutorial001.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 **FastAPI** 应用中的任何位置都可以实现覆盖依赖项。
 
@@ -48,7 +48,7 @@ FastAPI 可以覆盖这些位置的依赖项。
 app.dependency_overrides = {}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 如果只在某些测试时覆盖依赖项,您可以在测试开始时(在测试函数内)设置覆盖依赖项,并在结束时(在测试函数结尾)重置覆盖依赖项。
 
index a69053f243868895daab21b4f80dc164f29ef8c1..b30939b97d7f170a54dc6f8987392d195e0f834f 100644 (file)
@@ -8,7 +8,7 @@
 {!../../docs_src/app_testing/tutorial002.py!}
 ```
 
-/// note | "笔记"
+/// note | 笔记
 
 更多细节详见 <a href="https://www.starlette.io/testclient/#testing-websocket-sessions" class="external-link" target="_blank">Starlette 官档 - 测试 WebSockets</a>。
 
index 992458217f47385b09bad4a8cf807a459461dec7..f01644de69eebf7690adc39fc9004b69b1a390e3 100644 (file)
@@ -35,7 +35,7 @@
 
 把*路径操作函数*的参数类型声明为 `Request`,**FastAPI** 就能把 `Request` 传递到参数里。
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,本例除了声明请求参数之外,还声明了路径参数。
 
@@ -49,7 +49,7 @@
 
 更多细节详见 <a href="https://www.starlette.io/requests/" class="external-link" target="_blank">Starlette 官档 - `Request` 对象</a>。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 您也可以使用 `from starlette.requests import Request`。
 
index 15ae84c5815a3222edf28b2ee6f87ecb161d5bd9..dcd4cd5a98675e21355d383ffc95fd4271463d94 100644 (file)
@@ -46,7 +46,7 @@ $ pip install websockets
 {!../../docs_src/websockets/tutorial001.py!}
 ```
 
-/// note | "技术细节"
+/// note | 技术细节
 
 您也可以使用 `from starlette.websockets import WebSocket`。
 
index 85b341a8d64e6d7901041b871388c6f7cb3d315e..cad093c2a5ebcd294614663725987f0b26c440eb 100644 (file)
@@ -138,7 +138,7 @@ $ pip install -r requirements.txt
 
 这样,你不必再去重新"安装"你的本地版本即可测试所有更改。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 仅当你使用此项目中的 `requirements.txt` 安装而不是直接使用 `pip install fastapi` 安装时,才会发生这种情况。
 
index 00235bd022a9577bf93f25ecb801b30d40f1a4d7..f532c7fb7de1037726a57398b1096089bf3b4d42 100644 (file)
@@ -80,7 +80,7 @@ FastAPI CLI 接收你的 Python 程序路径,自动检测包含 FastAPI 的变
 
 在大多数情况下,你会(且应该)有一个“终止代理”在上层为你处理 HTTPS,这取决于你如何部署应用程序,你的服务提供商可能会为你处理此事,或者你可能需要自己设置。
 
-/// tip | "提示"
+/// tip | 提示
 
 你可以在 [deployment documentation](deployment/index.md){.internal-link target=_blank} 获得更多信息。
 
index fc47ed89de9e15cac36712f662928925be6aa9ce..09f37a44b1da551666f725d83e4c9e6645db03e3 100644 (file)
 
 快加入 👥 <a href="https://discord.gg/VQjSZaeJmf" class="external-link" target="_blank">Discord 聊天服务器</a> 👥 和 FastAPI 社区里的小伙伴一起哈皮吧。
 
-/// tip | "提示"
+/// tip | 提示
 
 如有问题,请在 <a href="https://github.com/fastapi/fastapi/issues/new/choose" class="external-link" target="_blank">GitHub Issues</a> 里提问,在这里更容易得到 [FastAPI 专家](fastapi-people.md#_3){.internal-link target=_blank}的帮助。
 
index 64afd99afeb5b45a0fba9dfd8e38c7f72b9f13f3..318e10fd75bba211eaaf68423d8d95b92d12f853 100644 (file)
@@ -414,7 +414,7 @@ from .routers.users import router
 
 它将包含来自该路由器的所有路由作为其一部分。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 实际上,它将在内部为声明在 `APIRouter` 中的每个*路径操作*创建一个*路径操作*。
 
@@ -477,7 +477,7 @@ from .routers.users import router
 
 它将与通过 `app.include_router()` 添加的所有其他*路径操作*一起正常运行。
 
-/// info | "特别的技术细节"
+/// info | 特别的技术细节
 
 **注意**:这是一个非常技术性的细节,你也许可以**直接跳过**。
 
index ac59d7e6aa289a440e83d19ec57e42fe4f73d568..9aeb481ef0868806c2f894040bde3bf73a13c5ea 100644 (file)
@@ -58,7 +58,7 @@
 
 ////
 
-/// warning | "警告"
+/// warning | 警告
 
 注意,与从 `fastapi` 导入 `Query`,`Path`、`Body` 不同,要直接从 `pydantic` 导入 `Field` 。
 
@@ -122,7 +122,7 @@ Prefer to use the `Annotated` version if possible.
 
 `Field` 的工作方式和 `Query`、`Path`、`Body` 相同,参数也相同。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 实际上,`Query`、`Path` 都是 `Params` 的子类,而 `Params` 类又是 Pydantic 中 `FieldInfo` 的子类。
 
@@ -134,7 +134,7 @@ Pydantic 的 `Field` 返回也是 `FieldInfo` 的类实例。
 
 ///
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,模型属性的类型、默认值及 `Field` 的代码结构与*路径操作函数*的参数相同,只不过是用 `Field` 替换了`Path`、`Query`、`Body`。
 
index 5e9008d6a1954ae1545a0763dc0edeaf8ad31a6a..9372e1dfd923d0dd33b43d5e8ccb8a3d6c926083 100644 (file)
@@ -34,7 +34,7 @@
 
 即,只发送要更新的数据,其余数据保持不变。
 
-/// note | "笔记"
+/// note | 笔记
 
 `PATCH` 没有 `PUT` 知名,也怎么不常用。
 
 {!../../docs_src/body_updates/tutorial002.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 实际上,HTTP `PUT` 也可以完成相同的操作。
 但本节以 `PATCH` 为例的原因是,该操作就是为了这种用例创建的。
 
 ///
 
-/// note | "笔记"
+/// note | 笔记
 
 注意,输入模型仍需验证。
 
index 67a7f28e0a2c38141cdec3b9b194bf12223fce51..bf3117beb1fef646669ba141b35b32a6c33d1e13 100644 (file)
@@ -8,7 +8,7 @@ API 基本上肯定要发送**响应体**,但是客户端不一定发送**请
 
 使用 <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> 模型声明**请求体**,能充分利用它的功能和优点。
 
-/// info | "说明"
+/// info | 说明
 
 发送数据使用 `POST`(最常用)、`PUT`、`DELETE`、`PATCH` 等操作。
 
@@ -149,7 +149,7 @@ Pydantic 模型的 JSON 概图是 OpenAPI 生成的概图部件,可在 API 文
 
 <img src="/img/tutorial/body/image05.png">
 
-/// tip | "提示"
+/// tip | 提示
 
 使用 <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> 编辑器时,推荐安装 <a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic PyCharm 插件</a>。
 
@@ -233,7 +233,7 @@ Pydantic 模型的 JSON 概图是 OpenAPI 生成的概图部件,可在 API 文
 - 类型是(`int`、`float`、`str`、`bool` 等)**单类型**的参数,是**查询**参数
 - 类型是 **Pydantic 模型**的参数,是**请求体**
 
-/// note | "笔记"
+/// note | 笔记
 
 因为默认值是 `None`, FastAPI 会把 `q` 当作可选参数。
 
index b01c28238afb3f527bbb75bd3023522fd193cee9..762dca766d8330cd4e92bab295fb65365910017f 100644 (file)
 
 ////
 
-/// note | "技术细节"
+/// note | 技术细节
 
 `Cookie` 、`Path` 、`Query` 是**兄弟类**,都继承自共用的 `Param` 类。
 
 
 ///
 
-/// info | "说明"
+/// info | 说明
 
 必须使用 `Cookie` 声明 cookie 参数,否则该参数会被解释为查询参数。
 
index 1166d5c97b64ef078ca86df9283b57924a563270..84c435c9703c745fca6de6c067e5e38eeb28def2 100644 (file)
@@ -78,7 +78,7 @@
 
 更多关于 <abbr title="Cross-Origin Resource Sharing">CORS</abbr> 的信息,请查看 <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS 文档</a>。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以使用 `from starlette.middleware.cors import CORSMiddleware`。
 
index c7cfe0531a259c9b172c6601651860b0d01cac05..c202c977b33a75cd327cbe577a27cbb62acd970d 100644 (file)
@@ -20,7 +20,7 @@
 
 路径操作装饰器依赖项(以下简称为**“路径装饰器依赖项”**)的执行或解析方式和普通依赖项一样,但就算这些依赖项会返回值,它们的值也不会传递给*路径操作函数*。
 
-/// tip | "提示"
+/// tip | 提示
 
 有些编辑器会检查代码中没使用过的函数参数,并显示错误提示。
 
@@ -30,7 +30,7 @@
 
 ///
 
-/// info | "说明"
+/// info | 说明
 
 本例中,使用的是自定义响应头 `X-Key` 和 `X-Token`。
 
index a30313719c602ab6a11586f31d108e0b3c0d73a5..792b6784d83aaa74acbdf09f9e2aa3624b647d63 100644 (file)
@@ -10,7 +10,7 @@ FastAPI支持在完成后执行一些<abbr title='有时也被称为"退出"("ex
 
 ///
 
-/// note | "技术细节"
+/// note | 技术细节
 
 任何一个可以与以下内容一起使用的函数:
 
@@ -148,7 +148,7 @@ FastAPI支持在完成后执行一些<abbr title='有时也被称为"退出"("ex
 
 **FastAPI** 将确保按正确的顺序运行所有内容。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 这是由 Python 的<a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">上下文管理器</a>完成的。
 
index b039e1654372b5c7355c2ff0c19baf85ceabdacd..e0d2c5f704f1dc6897fd22b98c66b651cf12f65a 100644 (file)
@@ -75,7 +75,7 @@ FastAPI 提供了简单易用,但功能强大的**<abbr title="也称为组件
 
 该函数接收的参数和*路径操作函数*的参数一样。
 
-/// tip | "提示"
+/// tip | 提示
 
 下一章介绍,除了函数还有哪些「对象」可以用作依赖项。
 
@@ -100,7 +100,7 @@ common_parameters --> read_users
 
 这样,只编写一次代码,**FastAPI** 就可以为多个*路径操作*共享这段代码 。
 
-/// check | "检查"
+/// check | 检查
 
 注意,无需创建专门的类,并将之传递给 **FastAPI** 以进行「注册」或执行类似的操作。
 
@@ -118,7 +118,7 @@ common_parameters --> read_users
 
 上述这些操作都是可行的,**FastAPI** 知道该怎么处理。
 
-/// note | "笔记"
+/// note | 笔记
 
 如里不了解异步,请参阅[异步:*“着急了?”*](../../async.md){.internal-link target=_blank} 一章中 `async` 和 `await` 的内容。
 
index dd4c608571d0905a70374bda4eb39daaa7fb9396..e0b75aa0cba18a7f41933ceceedf98a6d813520b 100644 (file)
@@ -41,7 +41,7 @@ FastAPI 支持创建含**子依赖项**的依赖项。
 {!../../docs_src/dependencies/tutorial005.py!}
 ```
 
-/// info | "信息"
+/// info | 信息
 
 注意,这里在*路径操作函数*中只声明了一个依赖项,即 `query_or_cookie_extractor` 。
 
@@ -81,7 +81,7 @@ async def needy_dependency(fresh_value: str = Depends(get_value, use_cache=False
 
 但它依然非常强大,能够声明任意嵌套深度的「图」或树状的依赖结构。
 
-/// tip | "提示"
+/// tip | 提示
 
 这些简单的例子现在看上去虽然没有什么实用价值,
 
index 6649b06c7f84a403c82247c4b912bacef81ba6e2..982cf15fbecd7cc626d7527a6a8d3e4604549879 100644 (file)
@@ -8,7 +8,7 @@
 * **输出模型**不应含密码
 * **数据库模型**需要加密的密码
 
-/// danger | "危险"
+/// danger | 危险
 
 千万不要存储用户的明文密码。始终存储可以进行验证的**安全哈希值**。
 
@@ -146,7 +146,7 @@ UserInDB(
 )
 ```
 
-/// warning | "警告"
+/// warning | 警告
 
 辅助的附加函数只是为了演示可能的数据流,但它们显然不能提供任何真正的安全机制。
 
@@ -194,7 +194,7 @@ FastAPI 可以做得更好。
 
 为此,请使用 Python 标准类型提示 <a href="https://docs.python.org/3/library/typing.html#typing.Union" class="external-link" target="_blank">`typing.Union`</a>:
 
-/// note | "笔记"
+/// note | 笔记
 
 定义 <a href="https://docs.pydantic.dev/latest/concepts/types/#unions" class="external-link" target="_blank">`Union`</a> 类型时,要把详细的类型写在前面,然后是不太详细的类型。下例中,更详细的 `PlaneItem` 位于 `Union[PlaneItem,CarItem]` 中的 `CarItem` 之前。
 
index b9bbca1931fa56d870eae7948bc56ea58ccf2973..2f573501c06ab78695929fe7e89f3b060f0f8dfb 100644 (file)
@@ -140,7 +140,7 @@ OpenAPI 为你的 API 定义 API 模式。该模式中包含了你的 API 发送
 
 `FastAPI` 是一个为你的 API 提供了所有功能的 Python 类。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 `FastAPI` 是直接从 `Starlette` 继承的类。
 
@@ -260,7 +260,7 @@ https://example.com/items/foo
 * 请求路径为 `/`
 * 使用 <abbr title="HTTP GET 方法"><code>get</code> 操作</abbr>
 
-/// info | "`@decorator` Info"
+/// info | `@decorator` Info
 
 `@something` 语法在 Python 中被称为「装饰器」。
 
index 0820c363cc35cabbc0ad3718f2f7608c0e64f81e..799e81eb204e03faf97c54e0ab38ab8872e1e04d 100644 (file)
@@ -67,7 +67,7 @@
 
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 触发 `HTTPException` 时,可以用参数 `detail` 传递任何能转换为 JSON 的值,不仅限于 `str`。
 
 
 ```
 
-/// note | "技术细节"
+/// note | 技术细节
 
 `from starlette.requests import Request` 和 `from starlette.responses import JSONResponse` 也可以用于导入 `Request` 和 `JSONResponse`。
 
@@ -176,7 +176,7 @@ path -> item_id
 
 ### `RequestValidationError` vs `ValidationError`
 
-/// warning | "警告"
+/// warning | 警告
 
 如果您觉得现在还用不到以下技术细节,可以先跳过下面的内容。
 
@@ -203,7 +203,7 @@ path -> item_id
 
 ```
 
-/// note | "技术细节"
+/// note | 技术细节
 
 还可以使用 `from starlette.responses import PlainTextResponse`。
 
index 4de8bf4df65f4175cf08ff82445263f74b0e33ce..c45a6b095cb339a24dd6130fc074cc7bdee49f3e 100644 (file)
 
 ////
 
-/// note | "技术细节"
+/// note | 技术细节
 
 `Header` 是 `Path`、`Query`、`Cookie` 的**兄弟类**,都继承自共用的 `Param` 类。
 
 
 ///
 
-/// info | "说明"
+/// info | 说明
 
 必须使用 `Header` 声明 header 参数,否则该参数会被解释为查询参数。
 
 
 ////
 
-/// warning | "警告"
+/// warning | 警告
 
 注意,使用 `convert_underscores = False` 要慎重,有些 HTTP 代理和服务器不支持使用带有下划线的请求头。
 
index 7252db9f620ba88314a457562cd1275800ade50c..2398f3e011d35c4af4b596fcdcf6f8fb2f0bb954 100644 (file)
@@ -46,7 +46,7 @@
 
 注意你可以在描述内使用 Markdown,例如「login」会显示为粗体(**login**)以及「fancy」会显示为斜体(_fancy_)。
 
-/// tip | "提示"
+/// tip | 提示
 
 不必为你使用的所有标签都添加元数据。
 
@@ -60,7 +60,7 @@
 {!../../docs_src/metadata/tutorial004.py!}
 ```
 
-/// info | "信息"
+/// info | 信息
 
 阅读更多关于标签的信息[路径操作配置](path-operation-configuration.md#tags){.internal-link target=_blank}。
 
index fb2874ba357ff6664ebff930a637994c7532bc48..8076f8d526b6db8124120e042a32587f47b8c2f1 100644 (file)
@@ -11,7 +11,7 @@
 * 它可以对该**响应**做些什么或者执行任何需要的代码.
 * 然后它返回这个 **响应**.
 
-/// note | "技术细节"
+/// note | 技术细节
 
 如果你使用了 `yield` 关键字依赖, 依赖中的退出代码将在执行中间件*后*执行.
 
@@ -43,7 +43,7 @@
 
 ///
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以使用 `from starlette.requests import Request`.
 
index 12e1f24ba11da15154449f99fbfece4ff4037522..add370d1c7c8f931b70bb95ed5935af8527d6070 100644 (file)
@@ -2,7 +2,7 @@
 
 *路径操作装饰器*支持多种配置参数。
 
-/// warning | "警告"
+/// warning | 警告
 
 注意:以下参数应直接传递给**路径操作装饰器**,不能传递给*路径操作函数*。
 
@@ -22,7 +22,7 @@
 
 状态码在响应中使用,并会被添加到 OpenAPI 概图。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 也可以使用 `from starlette import status` 导入状态码。
 
@@ -72,13 +72,13 @@ OpenAPI 概图会自动添加标签,供 API 文档接口使用:
 {!../../docs_src/path_operation_configuration/tutorial005.py!}
 ```
 
-/// info | "说明"
+/// info | 说明
 
 注意,`response_description` 只用于描述响应,`description` 一般则用于描述*路径操作*。
 
 ///
 
-/// check | "检查"
+/// check | 检查
 
 OpenAPI 规定每个*路径操作*都要有响应描述。
 
index 29197ac5316563c9892586b856bc731ec0408a96..3a1ebdbcaa507419059f049f3c498a5e34fc202a 100644 (file)
@@ -222,7 +222,7 @@ Python 不会对该 `*` 做任何事情,但是它将知道之后的所有参
 
 ///
 
-/// note | "技术细节"
+/// note | 技术细节
 
 当你从 `fastapi` 导入 `Query`、`Path` 和其他同类对象时,它们实际上是函数。
 
index a29ee0e2b9ec2a543b703ecf9d4b13e5f2e14303..0666783e249594b5cfe2d9fb506915e396756232 100644 (file)
@@ -24,7 +24,7 @@ FastAPI 支持使用 Python 字符串格式化语法声明**路径参数**(**
 
 本例把 `item_id` 的类型声明为 `int`。
 
-/// check | "检查"
+/// check | 检查
 
 类型声明将为函数提供错误检查、代码补全等编辑器支持。
 
@@ -38,7 +38,7 @@ FastAPI 支持使用 Python 字符串格式化语法声明**路径参数**(**
 {"item_id":3}
 ```
 
-/// check | "检查"
+/// check | 检查
 
 注意,函数接收并返回的值是 `3`( `int`),不是 `"3"`(`str`)。
 
@@ -69,7 +69,7 @@ FastAPI 支持使用 Python 字符串格式化语法声明**路径参数**(**
 
 值的类型不是 `int ` 而是浮点数(`float`)时也会显示同样的错误,比如: <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2。</a>
 
-/// check | "检查"
+/// check | 检查
 
 **FastAPI** 使用 Python 类型声明实现了数据校验。
 
@@ -85,7 +85,7 @@ FastAPI 支持使用 Python 字符串格式化语法声明**路径参数**(**
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | "检查"
+/// check | 检查
 
 还是使用 Python 类型声明,**FastAPI** 提供了(集成 Swagger UI 的)API 文档。
 
@@ -143,13 +143,13 @@ FastAPI 充分地利用了 <a href="https://docs.pydantic.dev/" class="external-
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// info | "说明"
+/// info | 说明
 
 Python 3.4 及之后版本支持<a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">枚举(即 enums)</a>。
 
 ///
 
-/// tip | "提示"
+/// tip | 提示
 
 **AlexNet**、**ResNet**、**LeNet** 是机器学习<abbr title="技术上来说是深度学习模型架构">模型</abbr>。
 
@@ -189,7 +189,7 @@ Python 3.4 及之后版本支持<a href="https://docs.python.org/3/library/enum.
 {!../../docs_src/path_params/tutorial005.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 使用 `ModelName.lenet.value` 也能获取值 `"lenet"`。
 
@@ -246,7 +246,7 @@ OpenAPI 不支持声明包含路径的*路径参数*,因为这会导致测试
 {!../../docs_src/path_params/tutorial004.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 注意,包含 `/home/johndoe/myfile.txt` 的路径参数要以斜杠(`/`)开头。
 
index f17d43d3abc130286a7e22b757941e516c565efd..4a9917be265386cbddcf5cde52282bf8d3fa45f8 100644 (file)
@@ -81,13 +81,13 @@ http://127.0.0.1:8000/items/?skip=20
 
 本例中,查询参数 `q` 是可选的,默认值为 `None`。
 
-/// check | "检查"
+/// check | 检查
 
 注意,**FastAPI** 可以识别出 `item_id` 是路径参数,`q` 不是路径参数,而是查询参数。
 
 ///
 
-/// note | "笔记"
+/// note | 笔记
 
 因为默认值为 `= None`,FastAPI 把 `q` 识别为可选参数。
 
@@ -249,7 +249,7 @@ http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
 * `skip`,默认值为 `0` 的 `int` 类型参数
 * `limit`,可选的 `int` 类型参数
 
-/// tip | "提示"
+/// tip | 提示
 
 还可以像在[路径参数](path-params.md#_8){.internal-link target=_blank} 中那样使用 `Enum`。
 
index 026771495936783d0e2b4e0b61b0903a44f3bac9..5a68d1d3fde9c825bf98649625506ff693fc7d0e 100644 (file)
@@ -2,7 +2,7 @@
 
 `File` 用于定义客户端的上传文件。
 
-/// info | "说明"
+/// info | 说明
 
 因为上传文件以「表单数据」形式发送。
 
@@ -28,7 +28,7 @@
 {!../../docs_src/request_files/tutorial001.py!}
 ```
 
-/// info | "说明"
+/// info | 说明
 
 `File` 是直接继承自 `Form` 的类。
 
@@ -36,7 +36,7 @@
 
 ///
 
-/// tip | "提示"
+/// tip | 提示
 
 声明文件体必须使用 `File`,否则,FastAPI 会把该参数当作查询参数或请求体(JSON)参数。
 
@@ -98,13 +98,13 @@ contents = await myfile.read()
 contents = myfile.file.read()
 ```
 
-/// note | "`async` 技术细节"
+/// note | `async` 技术细节
 
 使用 `async` 方法时,**FastAPI** 在线程池中执行文件方法,并 `await` 操作完成。
 
 ///
 
-/// note | "Starlette 技术细节"
+/// note | Starlette 技术细节
 
 **FastAPI** 的 `UploadFile` 直接继承自 **Starlette** 的 `UploadFile`,但添加了一些必要功能,使之与 **Pydantic** 及 FastAPI 的其它部件兼容。
 
@@ -116,7 +116,7 @@ contents = myfile.file.read()
 
 **FastAPI** 要确保从正确的位置读取数据,而不是读取 JSON。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 不包含文件时,表单数据一般用 `application/x-www-form-urlencoded`「媒体类型」编码。
 
@@ -126,7 +126,7 @@ contents = myfile.file.read()
 
 ///
 
-/// warning | "警告"
+/// warning | 警告
 
 可在一个*路径操作*中声明多个 `File` 和 `Form` 参数,但不能同时声明要接收 JSON 的 `Body` 字段。因为此时请求体的编码是 `multipart/form-data`,不是 `application/json`。
 
@@ -189,7 +189,7 @@ FastAPI 支持同时上传多个文件。
 接收的也是含 `bytes` 或 `UploadFile` 的列表(`list`)。
 
 
-/// note | "技术细节"
+/// note | 技术细节
 
 也可以使用 `from starlette.responses import HTMLResponse`。
 
index ae0fd82ca163a248b5972d8153915ab172b02773..bd87f5b68cbee89ccd54f5f88b538877d6761adb 100644 (file)
@@ -2,7 +2,7 @@
 
 FastAPI 支持同时使用 `File` 和 `Form` 定义文件和表单字段。
 
-/// info | "说明"
+/// info | 说明
 
 接收上传文件或表单数据,要预先安装 <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>。
 
@@ -28,7 +28,7 @@ FastAPI 支持同时使用 `File` 和 `Form` 定义文件和表单字段。
 
 声明文件可以使用 `bytes` 或 `UploadFile` 。
 
-/// warning | "警告"
+/// warning | 警告
 
 可在一个*路径操作*中声明多个 `File` 与 `Form` 参数,但不能同时声明要接收 JSON 的 `Body` 字段。因为此时请求体的编码为 `multipart/form-data`,不是 `application/json`。
 
index 94c8839b356a58228da0df31bc04149aa04e0913..5938bb83d64215fa8f8ee314a30e4317fee4175e 100644 (file)
@@ -2,7 +2,7 @@
 
 接收的不是 JSON,而是表单字段时,要使用 `Form`。
 
-/// info | "说明"
+/// info | 说明
 
 要使用表单,需预先安装 <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>。
 
 
 使用 `Form` 可以声明与 `Body` (及 `Query`、`Path`、`Cookie`)相同的元数据和验证。
 
-/// info | "说明"
+/// info | 说明
 
 `Form` 是直接继承自 `Body` 的类。
 
 ///
 
-/// tip | "提示"
+/// tip | 提示
 
 声明表单体要显式使用 `Form` ,否则,FastAPI 会把该参数当作查询参数或请求体(JSON)参数。
 
@@ -50,7 +50,7 @@
 
 **FastAPI** 要确保从正确的位置读取数据,而不是读取 JSON。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 表单数据的「媒体类型」编码一般为 `application/x-www-form-urlencoded`。
 
@@ -60,7 +60,7 @@
 
 ///
 
-/// warning | "警告"
+/// warning | 警告
 
 可在一个*路径操作*中声明多个 `Form` 参数,但不能同时声明要接收 JSON 的 `Body` 字段。因为此时请求体的编码是 `application/x-www-form-urlencoded`,不是 `application/json`。
 
index 40fb407209782bb23fadcec0503e2e7e6c481c03..fd0facca80e66a639a4bf3b7dce75931f6112215 100644 (file)
@@ -51,7 +51,7 @@ FastAPI 将使用此 `response_model` 来:
 
 * 会将输出数据限制在该模型定义内。下面我们会看到这一点有多重要。
 
-/// note | "技术细节"
+/// note | 技术细节
 
 响应模型在参数中被声明,而不是作为函数返回类型的注解,这是因为路径函数可能不会真正返回该响应模型,而是返回一个 `dict`、数据库对象或其他模型,然后再使用 `response_model` 来执行字段约束和序列化。
 
index 55bf502aee5de8ae51261c2a0bf523cf648cd8f1..1e5e7964f582bf52867909fef0590edfc912c58c 100644 (file)
@@ -12,7 +12,7 @@
 {!../../docs_src/response_status_code/tutorial001.py!}
 ```
 
-/// note | "笔记"
+/// note | 笔记
 
 注意,`status_code` 是(`get`、`post` 等)**装饰器**方法中的参数。与之前的参数和请求体不同,不是*路径操作函数*的参数。
 
@@ -20,7 +20,7 @@
 
 `status_code` 参数接收表示 HTTP 状态码的数字。
 
-/// info | "说明"
+/// info | 说明
 
 `status_code` 还能接收 `IntEnum` 类型,比如 Python 的 <a href="https://docs.python.org/3/library/http.html#http.HTTPStatus" class="external-link" target="_blank">`http.HTTPStatus`</a>。
 
@@ -33,7 +33,7 @@
 
 <img src="/img/tutorial/response-status-code/image01.png">
 
-/// note | "笔记"
+/// note | 笔记
 
 某些响应状态码表示响应没有响应体(参阅下一章)。
 
@@ -43,7 +43,7 @@ FastAPI 可以进行识别,并生成表明无响应体的 OpenAPI 文档。
 
 ## 关于 HTTP 状态码
 
-/// note | "笔记"
+/// note | 笔记
 
 如果已经了解 HTTP 状态码,请跳到下一章。
 
@@ -66,7 +66,7 @@ FastAPI 可以进行识别,并生成表明无响应体的 OpenAPI 文档。
     * 对于来自客户端的一般错误,可以只使用 `400`
 * `500` 及以上的状态码用于表示服务器端错误。几乎永远不会直接使用这些状态码。应用代码或服务器出现问题时,会自动返回这些状态代码
 
-/// tip | "提示"
+/// tip | 提示
 
 状态码及适用场景的详情,请参阅 <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network">MDN 的 HTTP 状态码</abbr>文档</a>。
 
@@ -94,7 +94,7 @@ FastAPI 可以进行识别,并生成表明无响应体的 OpenAPI 文档。
 
 <img src="../../../../../../img/tutorial/response-status-code/image02.png">
 
-/// note | "技术细节"
+/// note | 技术细节
 
 也可以使用 `from starlette import status`。
 
index 8294b64449a8a9000413931998a14077b9c2bb77..561721f6e3bebeae2b7a06aeb0a5801e8bc4c23a 100644 (file)
@@ -52,7 +52,7 @@
 
 ## 运行
 
-/// info | "说明"
+/// info | 说明
 
 先安装 <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>。
 
@@ -82,7 +82,7 @@ $ uvicorn main:app --reload
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | "Authorize 按钮!"
+/// check | Authorize 按钮!
 
 页面右上角出现了一个「**Authorize**」按钮。
 
@@ -94,7 +94,7 @@ $ uvicorn main:app --reload
 
 <img src="/img/tutorial/security/image02.png">
 
-/// note | "笔记"
+/// note | 笔记
 
 目前,在表单中输入内容不会有任何反应,后文会介绍相关内容。
 
@@ -140,7 +140,7 @@ OAuth2 的设计目标是为了让后端或 API 独立于服务器验证用户
 
 本例使用 **OAuth2** 的 **Password** 流以及 **Bearer** 令牌(`Token`)。为此要使用 `OAuth2PasswordBearer` 类。
 
-/// info | "说明"
+/// info | 说明
 
 `Bearer` 令牌不是唯一的选择。
 
@@ -158,7 +158,7 @@ OAuth2 的设计目标是为了让后端或 API 独立于服务器验证用户
 {!../../docs_src/security/tutorial001.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 在此,`tokenUrl="token"` 指向的是暂未创建的相对 URL `token`。这个相对 URL 相当于 `./token`。
 
@@ -172,7 +172,7 @@ OAuth2 的设计目标是为了让后端或 API 独立于服务器验证用户
 
 接下来,学习如何创建实际的路径操作。
 
-/// info | "说明"
+/// info | 说明
 
 严苛的 **Pythonista** 可能不喜欢用 `tokenUrl` 这种命名风格代替 `token_url`。
 
@@ -202,7 +202,7 @@ oauth2_scheme(some, parameters)
 
 **FastAPI** 使用依赖项在 OpenAPI 概图(及 API 文档)中定义**安全方案**。
 
-/// info | "技术细节"
+/// info | 技术细节
 
 **FastAPI** 使用(在依赖项中声明的)类 `OAuth2PasswordBearer` 在 OpenAPI 中定义安全方案,这是因为它继承自 `fastapi.security.oauth2.OAuth2`,而该类又是继承自`fastapi.security.base.SecurityBase`。
 
index 97461817a145a33ca5404615ef8a15c91a290302..e0f763b3078f2a694b4e1b637f4b80d073c430f5 100644 (file)
@@ -55,7 +55,7 @@
 
 这有助于在函数内部使用代码补全和类型检查。
 
-/// tip | "提示"
+/// tip | 提示
 
 还记得请求体也是使用 Pydantic 模型声明的吧。
 
@@ -63,7 +63,7 @@
 
 ///
 
-/// check | "检查"
+/// check | 检查
 
 依赖系统的这种设计方式可以支持不同的依赖项返回同一个 `User` 模型。
 
index 8e497b844c1718023747f700edf92e2cffda133d..4bb6e631895ac4d838870c0ac6d1689250e62c24 100644 (file)
@@ -40,7 +40,7 @@ $ pip install pyjwt
 
 </div>
 
-/// info | "说明"
+/// info | 说明
 
 如果您打算使用类似 RSA 或 ECDSA 的数字签名算法,您应该安装加密库依赖项 `pyjwt[crypto]`。
 
@@ -82,7 +82,7 @@ $ pip install passlib[bcrypt]
 
 </div>
 
-/// tip | "提示"
+/// tip | 提示
 
 `passlib` 甚至可以读取 Django、Flask 的安全插件等工具创建的密码。
 
@@ -98,7 +98,7 @@ $ pip install passlib[bcrypt]
 
 创建用于密码哈希和身份校验的 PassLib **上下文**。
 
-/// tip | "提示"
+/// tip | 提示
 
 PassLib 上下文还支持使用不同哈希算法的功能,包括只能校验的已弃用旧算法等。
 
@@ -166,7 +166,7 @@ Prefer to use the `Annotated` version if possible.
 
 ////
 
-/// note | "笔记"
+/// note | 笔记
 
 查看新的(伪)数据库 `fake_users_db`,就能看到哈希后的密码:`"$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW"`。
 
@@ -358,7 +358,7 @@ JWT 规范还包括 `sub` 键,值是令牌的主题。
 
 用户名: `johndoe` 密码: `secret`
 
-/// check | "检查"
+/// check | 检查
 
 注意,代码中没有明文密码**`secret`**,只保存了它的哈希值。
 
@@ -383,7 +383,7 @@ JWT 规范还包括 `sub` 键,值是令牌的主题。
 
 <img src="https://fastapi.tiangolo.com/img/tutorial/security/image10.png">
 
-/// note | "笔记"
+/// note | 笔记
 
 注意,请求中 `Authorization` 响应头的值以 `Bearer` 开头。
 
index 1f031a6b2eb8401b86262f746de5e106358d6118..8ce9263dbab9cb4a225b35f27b006f844d68c495 100644 (file)
@@ -32,7 +32,7 @@ OAuth2 还支持客户端发送**`scope`**表单字段。
 * 脸书和 Instagram 使用 `instagram_basic`
 * 谷歌使用 `https://www.googleapis.com/auth/drive`
 
-/// info | "说明"
+/// info | 说明
 
 OAuth2 中,**作用域**只是声明指定权限的字符串。
 
@@ -63,7 +63,7 @@ OAuth2 中,**作用域**只是声明指定权限的字符串。
 * 可选的 `scope` 字段,由多个空格分隔的字符串组成的长字符串
 * 可选的 `grant_type`
 
-/// tip | "提示"
+/// tip | 提示
 
 实际上,OAuth2 规范*要求* `grant_type` 字段使用固定值 `password`,但 `OAuth2PasswordRequestForm` 没有作强制约束。
 
@@ -74,7 +74,7 @@ OAuth2 中,**作用域**只是声明指定权限的字符串。
 * 可选的 `client_id`(本例未使用)
 * 可选的 `client_secret`(本例未使用)
 
-/// info | "说明"
+/// info | 说明
 
 `OAuth2PasswordRequestForm` 与 `OAuth2PasswordBearer` 一样,都不是 FastAPI 的特殊类。
 
@@ -88,7 +88,7 @@ OAuth2 中,**作用域**只是声明指定权限的字符串。
 
 ### 使用表单数据
 
-/// tip | "提示"
+/// tip | 提示
 
 `OAuth2PasswordRequestForm` 类依赖项的实例没有以空格分隔的长字符串属性 `scope`,但它支持 `scopes` 属性,由已发送的 scope 字符串列表组成。
 
@@ -150,7 +150,7 @@ UserInDB(
 )
 ```
 
-/// info | "说明"
+/// info | 说明
 
 `user_dict` 的说明,详见[**更多模型**一章](../extra-models.md#user_indict){.internal-link target=_blank}。
 
@@ -166,7 +166,7 @@ UserInDB(
 
 本例只是简单的演示,返回的 Token 就是 `username`,但这种方式极不安全。
 
-/// tip | "提示"
+/// tip | 提示
 
 下一章介绍使用哈希密码和 <abbr title="JSON Web Tokens">JWT</abbr> Token 的真正安全机制。
 
@@ -178,7 +178,7 @@ UserInDB(
 {!../../docs_src/security/tutorial003.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 按规范的要求,应像本示例一样,返回带有 `access_token` 和 `token_type` 的 JSON 对象。
 
@@ -206,7 +206,7 @@ UserInDB(
 {!../../docs_src/security/tutorial003.py!}
 ```
 
-/// info | "说明"
+/// info | 说明
 
 此处返回值为 `Bearer` 的响应头 `WWW-Authenticate` 也是规范的一部分。
 
index 379c441436a01b1d67f7c96db3e9bf54a26fcc8d..06b373e6d22b3b3ebc651086115bedcdb98ccfd1 100644 (file)
@@ -167,7 +167,7 @@ connect_args={"check_same_thread": False}
 
 ...仅用于`SQLite`,在其他数据库不需要它。
 
-/// info | "技术细节"
+/// info | 技术细节
 
 默认情况下,SQLite 只允许一个线程与其通信,假设有多个线程的话,也只将处理一个独立的请求。
 
@@ -630,7 +630,7 @@ SQLAlchemy 模型`User`包含一个`hashed_password`,它应该是一个包含
 
 ////
 
-/// info | "技术细节"
+/// info | 技术细节
 
 参数`db`实际上是 type `SessionLocal`,但是这个类(用 创建`sessionmaker()`)是 SQLAlchemy 的“代理” `Session`,所以,编辑器并不真正知道提供了哪些方法。
 
@@ -713,7 +713,7 @@ def read_user(user_id: int, db: Session = Depends(get_db)):
 
 ///
 
-/// note | "Very Technical Details"
+/// note | Very Technical Details
 
 如果您很好奇并且拥有深厚的技术知识,您可以在[Async](https://fastapi.tiangolo.com/zh/async/#very-technical-details)文档中查看有关如何处理 `async def`于`def`差别的技术细节。
 
index 37e90ad43d37cf2e0c12fdf3fa4695b3fbf9a63d..7580f731bd4317408a5e0f2a9a9513b94deae199 100644 (file)
@@ -11,7 +11,7 @@
 {!../../docs_src/static_files/tutorial001.py!}
 ```
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以用 `from starlette.staticfiles import StaticFiles`。
 
index 173e6f8a68d3d22a4e2ff21bbf7cd197602237cd..bb3ef8a6a2648d6d9936ec4e396d0d1e45051fd3 100644 (file)
@@ -8,7 +8,7 @@
 
 ## 使用 `TestClient`
 
-/// info | "信息"
+/// info | 信息
 
 要使用 `TestClient`,先要安装 <a href="https://www.python-httpx.org" class="external-link" target="_blank">`httpx`</a>.
 
@@ -30,7 +30,7 @@
 {!../../docs_src/app_testing/tutorial001.py!}
 ```
 
-/// tip | "提示"
+/// tip | 提示
 
 注意测试函数是普通的 `def`,不是 `async def`。
 
@@ -40,7 +40,7 @@
 
 ///
 
-/// note | "技术细节"
+/// note | 技术细节
 
 你也可以用 `from starlette.testclient import TestClient`。
 
@@ -48,7 +48,7 @@
 
 ///
 
-/// tip | "提示"
+/// tip | 提示
 
 除了发送请求之外,如果你还想测试时在FastAPI应用中调用 `async` 函数(例如异步数据库函数), 可以在高级教程中看下 [Async Tests](../advanced/async-tests.md){.internal-link target=_blank} 。
 
 
 //// tab | Python 3.10+ non-Annotated
 
-/// tip | "提示"
+/// tip | 提示
 
 Prefer to use the `Annotated` version if possible.
 
@@ -162,7 +162,7 @@ Prefer to use the `Annotated` version if possible.
 
 //// tab | Python 3.8+ non-Annotated
 
-/// tip | "提示"
+/// tip | 提示
 
 Prefer to use the `Annotated` version if possible.
 
@@ -196,7 +196,7 @@ Prefer to use the `Annotated` version if possible.
 
 关于如何传数据给后端的更多信息 (使用`httpx` 或 `TestClient`),请查阅 <a href="https://www.python-httpx.org" class="external-link" target="_blank">HTTPX 文档</a>.
 
-/// info | "信息"
+/// info | 信息
 
 注意 `TestClient` 接收可以被转化为JSON的数据,而不是Pydantic模型。