Browse Source

Merge branch 'master' into translate-zh-update-outdated-5dcc0d60

pull/15755/head
Yurii Motov 1 month ago
committed by GitHub
parent
commit
a12dfb67bb
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      .pre-commit-config.yaml
  2. 20
      docs/en/docs/release-notes.md
  3. 4
      docs/es/docs/advanced/additional-responses.md
  4. 2
      docs/es/docs/advanced/advanced-dependencies.md
  5. 8
      docs/es/docs/advanced/custom-response.md
  6. 2
      docs/es/docs/advanced/dataclasses.md
  7. 4
      docs/es/docs/advanced/events.md
  8. 5
      docs/es/docs/advanced/generate-clients.md
  9. 6
      docs/es/docs/advanced/openapi-callbacks.md
  10. 4
      docs/es/docs/advanced/openapi-webhooks.md
  11. 12
      docs/es/docs/advanced/path-operation-advanced-configuration.md
  12. 6
      docs/es/docs/advanced/response-directly.md
  13. 4
      docs/es/docs/advanced/security/oauth2-scopes.md
  14. 4
      docs/es/docs/advanced/stream-data.md
  15. 8
      docs/es/docs/advanced/strict-content-type.md
  16. 2
      docs/es/docs/advanced/websockets.md
  17. 2
      docs/es/docs/advanced/wsgi.md
  18. 4
      docs/es/docs/deployment/docker.md
  19. 24
      docs/es/docs/deployment/fastapicloud.md
  20. 1
      docs/es/docs/deployment/manually.md
  21. 2
      docs/es/docs/deployment/server-workers.md
  22. 12
      docs/es/docs/how-to/extending-openapi.md
  23. 2
      docs/es/docs/how-to/separate-openapi-schemas.md
  24. 8
      docs/es/docs/index.md
  25. 22
      docs/es/docs/tutorial/bigger-applications.md
  26. 4
      docs/es/docs/tutorial/body-multiple-params.md
  27. 4
      docs/es/docs/tutorial/body-nested-models.md
  28. 2
      docs/es/docs/tutorial/body.md
  29. 2
      docs/es/docs/tutorial/cookie-param-models.md
  30. 4
      docs/es/docs/tutorial/cookie-params.md
  31. 6
      docs/es/docs/tutorial/debugging.md
  32. 2
      docs/es/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
  33. 2
      docs/es/docs/tutorial/dependencies/dependencies-with-yield.md
  34. 6
      docs/es/docs/tutorial/dependencies/index.md
  35. 2
      docs/es/docs/tutorial/dependencies/sub-dependencies.md
  36. 34
      docs/es/docs/tutorial/first-steps.md
  37. 2
      docs/es/docs/tutorial/metadata.md
  38. 4
      docs/es/docs/tutorial/path-operation-configuration.md
  39. 4
      docs/es/docs/tutorial/path-params-numeric-validations.md
  40. 10
      docs/es/docs/tutorial/path-params.md
  41. 6
      docs/es/docs/tutorial/query-params-str-validations.md
  42. 2
      docs/es/docs/tutorial/query-params.md
  43. 4
      docs/es/docs/tutorial/request-files.md
  44. 2
      docs/es/docs/tutorial/request-form-models.md
  45. 2
      docs/es/docs/tutorial/request-forms-and-files.md
  46. 8
      docs/es/docs/tutorial/request-forms.md
  47. 4
      docs/es/docs/tutorial/response-model.md
  48. 2
      docs/es/docs/tutorial/response-status-code.md
  49. 6
      docs/es/docs/tutorial/schema-extra-example.md
  50. 10
      docs/es/docs/tutorial/security/first-steps.md
  51. 2
      docs/es/docs/tutorial/security/get-current-user.md
  52. 4
      docs/es/docs/tutorial/security/oauth2-jwt.md
  53. 10
      docs/es/docs/tutorial/security/simple-oauth2.md
  54. 2
      docs/es/docs/tutorial/server-sent-events.md
  55. 4
      docs/es/docs/tutorial/stream-json-lines.md
  56. 6
      docs/es/docs/tutorial/testing.md
  57. 4
      docs/ja/docs/advanced/additional-responses.md
  58. 2
      docs/ja/docs/advanced/advanced-dependencies.md
  59. 4
      docs/ja/docs/advanced/custom-response.md
  60. 2
      docs/ja/docs/advanced/dataclasses.md
  61. 4
      docs/ja/docs/advanced/events.md
  62. 1
      docs/ja/docs/advanced/generate-clients.md
  63. 4
      docs/ja/docs/advanced/openapi-callbacks.md
  64. 4
      docs/ja/docs/advanced/openapi-webhooks.md
  65. 12
      docs/ja/docs/advanced/path-operation-advanced-configuration.md
  66. 2
      docs/ja/docs/advanced/response-directly.md
  67. 4
      docs/ja/docs/advanced/security/oauth2-scopes.md
  68. 4
      docs/ja/docs/advanced/stream-data.md
  69. 2
      docs/ja/docs/advanced/strict-content-type.md
  70. 2
      docs/ja/docs/advanced/websockets.md
  71. 2
      docs/ja/docs/advanced/wsgi.md
  72. 6
      docs/ja/docs/deployment/docker.md
  73. 24
      docs/ja/docs/deployment/fastapicloud.md
  74. 1
      docs/ja/docs/deployment/manually.md
  75. 2
      docs/ja/docs/deployment/server-workers.md
  76. 12
      docs/ja/docs/how-to/extending-openapi.md
  77. 6
      docs/ja/docs/how-to/separate-openapi-schemas.md
  78. 6
      docs/ja/docs/index.md
  79. 22
      docs/ja/docs/tutorial/bigger-applications.md
  80. 4
      docs/ja/docs/tutorial/body-multiple-params.md
  81. 5
      docs/ja/docs/tutorial/body-nested-models.md
  82. 2
      docs/ja/docs/tutorial/body.md
  83. 2
      docs/ja/docs/tutorial/cookie-param-models.md
  84. 4
      docs/ja/docs/tutorial/cookie-params.md
  85. 6
      docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
  86. 2
      docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
  87. 4
      docs/ja/docs/tutorial/dependencies/index.md
  88. 2
      docs/ja/docs/tutorial/dependencies/sub-dependencies.md
  89. 34
      docs/ja/docs/tutorial/first-steps.md
  90. 2
      docs/ja/docs/tutorial/metadata.md
  91. 4
      docs/ja/docs/tutorial/path-operation-configuration.md
  92. 4
      docs/ja/docs/tutorial/path-params-numeric-validations.md
  93. 8
      docs/ja/docs/tutorial/path-params.md
  94. 34
      docs/ja/docs/tutorial/query-params-str-validations.md
  95. 2
      docs/ja/docs/tutorial/query-params.md
  96. 4
      docs/ja/docs/tutorial/request-files.md
  97. 2
      docs/ja/docs/tutorial/request-form-models.md
  98. 2
      docs/ja/docs/tutorial/request-forms-and-files.md
  99. 6
      docs/ja/docs/tutorial/request-forms.md
  100. 4
      docs/ja/docs/tutorial/response-model.md

2
.pre-commit-config.yaml

@ -45,7 +45,7 @@ repos:
- id: local-ty
name: ty check
entry: uv run ty check fastapi
entry: uv run ty check
require_serial: true
language: unsupported
pass_filenames: false

20
docs/en/docs/release-notes.md

@ -7,6 +7,26 @@ hide:
## Latest Changes
### Translations
* 🌐 Update translations for pt (update-outdated). PR [#15753](https://github.com/fastapi/fastapi/pull/15753) by [@tiangolo](https://github.com/tiangolo).
* 🌐 Update translations for es (update-outdated). PR [#15752](https://github.com/fastapi/fastapi/pull/15752) by [@tiangolo](https://github.com/tiangolo).
* 🌐 Update translations for ja (update-outdated). PR [#15751](https://github.com/fastapi/fastapi/pull/15751) by [@tiangolo](https://github.com/tiangolo).
* 🌐 Update translations for ru (update-outdated). PR [#15758](https://github.com/fastapi/fastapi/pull/15758) by [@tiangolo](https://github.com/tiangolo).
### Internal
* 🔥 Remove unused scripts. PR [#15771](https://github.com/fastapi/fastapi/pull/15771) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Add ty configs to check docs sources. PR [#15770](https://github.com/fastapi/fastapi/pull/15770) by [@tiangolo](https://github.com/tiangolo).
* 🔧 Add ty configs to check docs sources. PR [#15769](https://github.com/fastapi/fastapi/pull/15769) by [@tiangolo](https://github.com/tiangolo).
## 0.137.1 (2026-06-15)
### Fixes
* 🚨 Fix typing checks for APIRoute. PR [#15765](https://github.com/fastapi/fastapi/pull/15765) by [@tiangolo](https://github.com/tiangolo).
* 🐛 Fix bug, allow empty path in path operation in prefixless router. PR [#15763](https://github.com/fastapi/fastapi/pull/15763) by [@tiangolo](https://github.com/tiangolo).
## 0.137.0 (2026-06-14)
### Breaking Changes

4
docs/es/docs/advanced/additional-responses.md

@ -34,7 +34,7 @@ Ten en cuenta que debes devolver el `JSONResponse` directamente.
///
/// info | Información
/// note | Nota
La clave `model` no es parte de OpenAPI.
@ -183,7 +183,7 @@ Nota que debes devolver la imagen usando un `FileResponse` directamente.
///
/// info | Información
/// note | Nota
A menos que especifiques un media type diferente explícitamente en tu parámetro `responses`, FastAPI asumirá que el response tiene el mismo media type que la clase de response principal (por defecto `application/json`).

2
docs/es/docs/advanced/advanced-dependencies.md

@ -98,7 +98,7 @@ Por ejemplo, si tenías una sesión de base de datos en una dependencia con `yie
Este comportamiento se revirtió en la 0.118.0, para hacer que el código de salida después de `yield` se ejecute después de que la response sea enviada.
/// info | Información
/// note | Nota
Como verás abajo, esto es muy similar al comportamiento anterior a la versión 0.106.0, pero con varias mejoras y arreglos de bugs para casos límite.

8
docs/es/docs/advanced/custom-response.md

@ -24,7 +24,7 @@ Si declaras un [Response Model](../tutorial/response-model.md) FastAPI lo usará
Si no declaras un response model, FastAPI usará el `jsonable_encoder` explicado en [Codificador Compatible con JSON](../tutorial/encoder.md) y lo pondrá en un `JSONResponse`.
Si declaras un `response_class` con un media type JSON (`application/json`), como es el caso con `JSONResponse`, los datos que devuelvas se convertirán automáticamente (y serán filtrados) con cualquier `response_model` de Pydantic que hayas declarado en el *path operation decorator*. Pero los datos no se serializarán a bytes JSON con Pydantic, en su lugar se convertirán con el `jsonable_encoder` y luego se pasarán a la clase `JSONResponse`, que los serializará a bytes usando la librería JSON estándar de Python.
Si declaras un `response_class` con un media type JSON (`application/json`), como es el caso con `JSONResponse`, los datos que devuelvas se convertirán automáticamente (y serán filtrados) con cualquier `response_model` de Pydantic que hayas declarado en el *path operation decorator*. Pero los datos no se serializarán a bytes JSON con Pydantic, en su lugar se convertirán con el `jsonable_encoder` y luego se pasarán a la clase `JSONResponse`, que los serializará a bytes usando el paquete JSON estándar de Python.
### Rendimiento JSON { #json-performance }
@ -41,7 +41,7 @@ Para devolver un response con HTML directamente desde **FastAPI**, usa `HTMLResp
{* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
/// info | Información
/// note | Nota
El parámetro `response_class` también se utilizará para definir el "media type" del response.
@ -65,7 +65,7 @@ Una `Response` devuelta directamente por tu *path operation function* no se docu
///
/// info | Información
/// note | Nota
Por supuesto, el `Content-Type` header real, el código de estado, etc., provendrán del objeto `Response` que devolviste.
@ -181,7 +181,7 @@ Toma un generador `async` o un generador/iterador normal (una función con `yiel
Una tarea `async` solo puede cancelarse cuando llega a un `await`. Si no hay `await`, el generador (función con `yield`) no se puede cancelar correctamente y puede seguir ejecutándose incluso después de solicitar la cancelación.
Como este pequeño ejemplo no necesita ninguna sentencia `await`, añadimos un `await anyio.sleep(0)` para darle al loop de eventos la oportunidad de manejar la cancelación.
Como este pequeño ejemplo no necesita ninguna statement `await`, añadimos un `await anyio.sleep(0)` para darle al loop de eventos la oportunidad de manejar la cancelación.
Esto sería aún más importante con streams grandes o infinitos.

2
docs/es/docs/advanced/dataclasses.md

@ -18,7 +18,7 @@ Y por supuesto, soporta lo mismo:
Esto funciona de la misma manera que con los modelos de Pydantic. Y en realidad se logra de la misma manera internamente, utilizando Pydantic.
/// info | Información
/// note | Nota
Ten en cuenta que los dataclasses no pueden hacer todo lo que los modelos de Pydantic pueden hacer.

4
docs/es/docs/advanced/events.md

@ -120,7 +120,7 @@ Para añadir una función que debería ejecutarse cuando la aplicación se esté
Aquí, la función manejadora del evento `shutdown` escribirá una línea de texto `"Application shutdown"` a un archivo `log.txt`.
/// info | Información
/// note | Nota
En la función `open()`, el `mode="a"` significa "añadir", por lo tanto, la línea será añadida después de lo que sea que esté en ese archivo, sin sobrescribir el contenido anterior.
@ -152,7 +152,7 @@ Solo un detalle técnico para los nerds curiosos. 🤓
Por debajo, en la especificación técnica ASGI, esto es parte del [Protocolo de Lifespan](https://asgi.readthedocs.io/en/latest/specs/lifespan.html), y define eventos llamados `startup` y `shutdown`.
/// info | Información
/// note | Nota
Puedes leer más sobre los manejadores `lifespan` de Starlette en [la documentación de `Lifespan` de Starlette](https://www.starlette.dev/lifespan/).

5
docs/es/docs/advanced/generate-clients.md

@ -22,16 +22,15 @@ FastAPI genera automáticamente especificaciones **OpenAPI 3.1**, así que cualq
## Generadores de SDKs de sponsors de FastAPI { #sdk-generators-from-fastapi-sponsors }
Esta sección destaca soluciones **respaldadas por empresas** y **venture-backed** de compañías que sponsorean FastAPI. Estos productos ofrecen **funcionalidades adicionales** e **integraciones** además de SDKs generados de alta calidad.
Esta sección destaca soluciones **respaldadas por empresas** y **venture-backed** de compañías que sponsor FastAPI. Estos productos ofrecen **funcionalidades adicionales** e **integraciones** además de SDKs generados de alta calidad.
Al ✨ [**sponsorear FastAPI**](../help-fastapi.md#sponsor-the-author) ✨, estas compañías ayudan a asegurar que el framework y su **ecosistema** se mantengan saludables y **sustentables**.
Al ✨ [**ser sponsor de FastAPI**](../help-fastapi.md#sponsor-the-author) ✨, estas compañías ayudan a asegurar que el framework y su **ecosistema** se mantengan saludables y **sustentables**.
Su sponsorship también demuestra un fuerte compromiso con la **comunidad** de FastAPI (tú), mostrando que no solo les importa ofrecer un **gran servicio**, sino también apoyar un **framework robusto y próspero**, FastAPI. 🙇
Por ejemplo, podrías querer probar:
* [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi)
Algunas de estas soluciones también pueden ser open source u ofrecer niveles gratuitos, así que puedes probarlas sin un compromiso financiero. Hay otros generadores de SDK comerciales disponibles y se pueden encontrar en línea. 🤓

6
docs/es/docs/advanced/openapi-callbacks.md

@ -4,7 +4,7 @@ Podrías crear una API con una *path operation* que podría desencadenar un requ
El proceso que ocurre cuando tu aplicación API llama a la *API externa* se llama un "callback". Porque el software que escribió el desarrollador externo envía un request a tu API y luego tu API hace un *callback*, enviando un request a una *API externa* (que probablemente fue creada por el mismo desarrollador).
En este caso, podrías querer documentar cómo esa API externa *debería* verse. Qué *path operation* debería tener, qué cuerpo debería esperar, qué response debería devolver, etc.
En este caso, podrías querer documentar cómo esa API externa *debería* verse. Qué *path operation* debería tener, qué body debería esperar, qué response debería devolver, etc.
## Una aplicación con callbacks { #an-app-with-callbacks }
@ -167,13 +167,13 @@ Observa cómo la URL del callback utilizada contiene la URL recibida como parám
En este punto tienes las *path operation(s)* del callback necesarias (las que el *desarrollador externo* debería implementar en la *API externa*) en el router de callback que creaste arriba.
Ahora usa el parámetro `callbacks` en el *decorador de path operation de tu API* para pasar el atributo `.routes` (que en realidad es solo un `list` de rutas/*path operations*) de ese router de callback:
Ahora usa el parámetro `callbacks` en el *decorador de path operation de tu API* para pasar el atributo `.routes` de ese router de callback:
{* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *}
/// tip | Consejo
Observa que no estás pasando el router en sí (`invoices_callback_router`) a `callback=`, sino el atributo `.routes`, como en `invoices_callback_router.routes`.
Observa que no estás pasando el router en sí (`invoices_callback_router`) a `callbacks=`, sino su `.routes`, como en `invoices_callback_router.routes`. **FastAPI** usará esas rutas para generar la documentación OpenAPI del callback.
///

4
docs/es/docs/advanced/openapi-webhooks.md

@ -22,7 +22,7 @@ Con **FastAPI**, usando OpenAPI, puedes definir los nombres de estos webhooks, l
Esto puede hacer mucho más fácil para tus usuarios **implementar sus APIs** para recibir tus requests de **webhook**, incluso podrían ser capaces de autogenerar algo de su propio código de API.
/// info | Información
/// note | Nota
Los webhooks están disponibles en OpenAPI 3.1.0 y superiores, soportados por FastAPI `0.99.0` y superiores.
@ -36,7 +36,7 @@ Cuando creas una aplicación de **FastAPI**, hay un atributo `webhooks` que pued
Los webhooks que defines terminarán en el esquema de **OpenAPI** y en la interfaz automática de **documentación**.
/// info | Información
/// note | Nota
El objeto `app.webhooks` es en realidad solo un `APIRouter`, el mismo tipo que usarías al estructurar tu aplicación con múltiples archivos.

12
docs/es/docs/advanced/path-operation-advanced-configuration.md

@ -16,17 +16,11 @@ Tendrías que asegurarte de que sea único para cada operación.
### Usar el nombre de la *path operation function* como el operationId { #using-the-path-operation-function-name-as-the-operationid }
Si quieres usar los nombres de las funciones de tus APIs como `operationId`s, puedes iterar sobre todas ellas y sobrescribir el `operation_id` de cada *path operation* usando su `APIRoute.name`.
Si quieres usar los nombres de las funciones de tus APIs como `operationId`s, puedes pasar una `generate_unique_id_function` personalizada a `FastAPI`.
Deberías hacerlo después de agregar todas tus *path operations*.
La función recibe cada `APIRoute` y devuelve el `operationId` a usar para esa *path operation*.
{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2, 12:21, 24] *}
/// tip | Consejo
Si llamas manualmente a `app.openapi()`, deberías actualizar los `operationId`s antes de eso.
///
{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2,5:6,9] *}
/// warning | Advertencia

6
docs/es/docs/advanced/response-directly.md

@ -16,9 +16,9 @@ Normalmente tendrás mucho mejor rendimiento usando un [Response Model](../tutor
## Devolver una `Response` { #return-a-response }
De hecho, puedes devolver cualquier `Response` o cualquier subclase de ella.
Puedes devolver una `Response` o cualquier subclase de ella.
/// info | Información
/// note | Nota
`JSONResponse` en sí misma es una subclase de `Response`.
@ -78,6 +78,6 @@ En su lugar, toma los bytes JSON generados con Pydantic usando el response model
Cuando devuelves una `Response` directamente, sus datos no son validados, convertidos (serializados), ni documentados automáticamente.
Pero aún puedes documentarlo como se describe en [Additional Responses in OpenAPI](additional-responses.md).
Pero aún puedes documentarlo como se describe en [Respuestas adicionales en OpenAPI](additional-responses.md).
Puedes ver en secciones posteriores cómo usar/declarar estas `Response`s personalizadas mientras todavía tienes conversión automática de datos, documentación, etc.

4
docs/es/docs/advanced/security/oauth2-scopes.md

@ -46,7 +46,7 @@ Normalmente se utilizan para declarar permisos de seguridad específicos, por ej
* `instagram_basic` es usado por Facebook / Instagram.
* `https://www.googleapis.com/auth/drive` es usado por Google.
/// info | Información
/// note | Nota
En OAuth2 un "scope" es solo un string que declara un permiso específico requerido.
@ -126,7 +126,7 @@ Lo estamos haciendo aquí para demostrar cómo **FastAPI** maneja scopes declara
{* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *}
/// info | Información Técnica
/// note | Detalles técnicos
`Security` es en realidad una subclase de `Depends`, y tiene solo un parámetro extra que veremos más adelante.

4
docs/es/docs/advanced/stream-data.md

@ -4,7 +4,7 @@ Si quieres transmitir datos que se puedan estructurar como JSON, deberías [Tran
Pero si quieres transmitir datos binarios puros o strings, aquí tienes cómo hacerlo.
/// info | Información
/// note | Nota
Añadido en FastAPI 0.134.0.
@ -90,7 +90,7 @@ Por ejemplo, no tienen un `await file.read()`, ni un `async for chunk in file`.
Y en muchos casos leerlos sería una operación bloqueante (que podría bloquear el event loop), porque se leen desde disco o desde la red.
/// info | Información
/// note | Nota
El ejemplo anterior es en realidad una excepción, porque el objeto `io.BytesIO` ya está en memoria, así que leerlo no bloqueará nada.

8
docs/es/docs/advanced/strict-content-type.md

@ -40,7 +40,7 @@ Ten en cuenta que ambos tienen el mismo host.
Luego, usando el frontend, puedes hacer que el agente de IA haga cosas en tu nombre.
Como está corriendo localmente y no en Internet abierta, decides no tener ninguna autenticación configurada, confiando simplemente en el acceso a la red local.
Como está corriendo **localmente** y no en Internet abierta, decides **no tener ninguna autenticación** configurada, confiando simplemente en el acceso a la red local.
Entonces, uno de tus usuarios podría instalarlo y ejecutarlo localmente.
@ -69,9 +69,9 @@ Si tu app está en Internet abierta, no “confiarías en la red” ni permitir
Los atacantes podrían simplemente ejecutar un script para enviar requests a tu API, sin necesidad de interacción del navegador, así que probablemente ya estás asegurando cualquier endpoint privilegiado.
En ese caso, este ataque/riesgo no aplica a ti.
En ese caso, **este ataque/riesgo no aplica a ti**.
Este riesgo y ataque es relevante principalmente cuando la app corre en la red local y esa es la única protección asumida.
Este riesgo y ataque es relevante principalmente cuando la app corre en la **red local** y esa es la **única protección asumida**.
## Permitir requests sin Content-Type { #allowing-requests-without-content-type }
@ -81,7 +81,7 @@ Si necesitas soportar clientes que no envían un header `Content-Type`, puedes d
Con esta configuración, las requests sin un header `Content-Type` tendrán su body parseado como JSON, que es el mismo comportamiento de versiones anteriores de FastAPI.
/// info | Información
/// note | Nota
Este comportamiento y configuración se añadieron en FastAPI 0.132.0.

2
docs/es/docs/advanced/websockets.md

@ -111,7 +111,7 @@ Funcionan de la misma manera que para otros endpoints de FastAPI/*path operation
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
/// info | Información
/// note | Nota
Como esto es un WebSocket no tiene mucho sentido lanzar un `HTTPException`, en su lugar lanzamos un `WebSocketException`.

2
docs/es/docs/advanced/wsgi.md

@ -6,7 +6,7 @@ Para eso, puedes usar el `WSGIMiddleware` y usarlo para envolver tu aplicación
## Usando `WSGIMiddleware` { #using-wsgimiddleware }
/// info | Información
/// note | Nota
Esto requiere instalar `a2wsgi`, por ejemplo con `pip install a2wsgi`.

4
docs/es/docs/deployment/docker.md

@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
</div>
/// info | Información
/// note | Nota
Existen otros formatos y herramientas para definir e instalar dependencias de paquetes.
@ -556,7 +556,7 @@ Si estás usando contenedores (por ejemplo, Docker, Kubernetes), entonces hay do
Si tienes **múltiples contenedores**, probablemente cada uno ejecutando un **proceso único** (por ejemplo, en un cluster de **Kubernetes**), entonces probablemente querrías tener un **contenedor separado** realizando el trabajo de los **pasos previos** en un solo contenedor, ejecutando un solo proceso, **antes** de ejecutar los contenedores worker replicados.
/// info | Información
/// note | Nota
Si estás usando Kubernetes, probablemente sería un [Contenedor de Inicialización](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/).

24
docs/es/docs/deployment/fastapicloud.md

@ -1,26 +1,6 @@
# FastAPI Cloud { #fastapi-cloud }
Puedes desplegar tu app de FastAPI en [FastAPI Cloud](https://fastapicloud.com) con **un solo comando**; ve y únete a la lista de espera si aún no lo has hecho. 🚀
## Iniciar sesión { #login }
Asegúrate de que ya tienes una cuenta de **FastAPI Cloud** (te invitamos desde la lista de espera 😉).
Luego inicia sesión:
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
## Desplegar { #deploy }
Ahora despliega tu app, con **un solo comando**:
Puedes desplegar tu app de FastAPI en [FastAPI Cloud](https://fastapicloud.com) con **un solo comando**. 🚀
<div class="termy">
@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
</div>
La CLI detectará automáticamente tu aplicación de FastAPI y la desplegará en la nube. Si no has iniciado sesión, se abrirá tu navegador para completar el proceso de autenticación.
¡Eso es todo! Ahora puedes acceder a tu app en esa URL. ✨
## Acerca de FastAPI Cloud { #about-fastapi-cloud }

1
docs/es/docs/deployment/manually.md

@ -56,7 +56,6 @@ Hay varias alternativas, incluyendo:
* [Hypercorn](https://hypercorn.readthedocs.io/): un servidor ASGI compatible con HTTP/2 y Trio entre otras funcionalidades.
* [Daphne](https://github.com/django/daphne): el servidor ASGI construido para Django Channels.
* [Granian](https://github.com/emmett-framework/granian): Un servidor HTTP Rust para aplicaciones en Python.
* [NGINX Unit](https://unit.nginx.org/howto/fastapi/): NGINX Unit es un runtime para aplicaciones web ligero y versátil.
## Máquina Servidor y Programa Servidor { #server-machine-and-server-program }

2
docs/es/docs/deployment/server-workers.md

@ -17,7 +17,7 @@ Como viste en el capítulo anterior sobre [Conceptos de Despliegue](concepts.md)
Aquí te mostraré cómo usar **Uvicorn** con **worker processes** usando el comando `fastapi` o el comando `uvicorn` directamente.
/// info | Información
/// note | Nota
Si estás usando contenedores, por ejemplo con Docker o Kubernetes, te contaré más sobre eso en el próximo capítulo: [FastAPI en Contenedores - Docker](docker.md).

12
docs/es/docs/how-to/extending-openapi.md

@ -25,9 +25,17 @@ Y esa función `get_openapi()` recibe como parámetros:
* `openapi_version`: La versión de la especificación OpenAPI utilizada. Por defecto, la más reciente: `3.1.0`.
* `summary`: Un breve resumen de la API.
* `description`: La descripción de tu API, esta puede incluir markdown y se mostrará en la documentación.
* `routes`: Una list de rutas, estas son cada una de las *path operations* registradas. Se toman de `app.routes`.
* `routes`: Las rutas de la aplicación, tomadas de `app.routes`. FastAPI las usa para recolectar las *path operations* registradas, incluidas las de los routers incluidos.
/// info | Información
/// tip | Detalles técnicos
`app.routes` es un árbol de rutas de nivel inferior. Puede incluir rutas candidatas que FastAPI usa internamente para routers incluidos, no solo objetos `APIRoute` finales.
Aun así puedes pasar `app.routes` a `get_openapi()`. FastAPI recorrerá ese árbol de rutas para recolectar las path operations efectivas.
///
/// note | Nota
El parámetro `summary` está disponible en OpenAPI 3.1.0 y versiones superiores, soportado por FastAPI 0.99.0 y superiores.

2
docs/es/docs/how-to/separate-openapi-schemas.md

@ -85,7 +85,7 @@ Probablemente el caso principal para esto es si ya tienes algún código cliente
En ese caso, puedes desactivar esta funcionalidad en **FastAPI**, con el parámetro `separate_input_output_schemas=False`.
/// info | Información
/// note | Nota
El soporte para `separate_input_output_schemas` fue agregado en FastAPI `0.102.0`. 🤓

8
docs/es/docs/index.md

@ -45,7 +45,7 @@ Las funcionalidades clave son:
* **Rápido**: Muy alto rendimiento, a la par con **NodeJS** y **Go** (gracias a Starlette y Pydantic). [Uno de los frameworks Python más rápidos disponibles](#performance).
* **Rápido de programar**: Aumenta la velocidad para desarrollar funcionalidades en aproximadamente un 200% a 300%. *
* **Menos bugs**: Reduce en aproximadamente un 40% los errores inducidos por humanos (desarrolladores). *
* **Intuitivo**: Gran soporte para editores. <dfn title="también conocido como: auto-complete, autocompletado, IntelliSense">Autocompletado</dfn> en todas partes. Menos tiempo depurando.
* **Intuitivo**: Gran soporte para editores. <dfn title="también conocido como: autocompletado, IntelliSense">Autocompletado</dfn> en todas partes. Menos tiempo depurando.
* **Fácil**: Diseñado para ser fácil de usar y aprender. Menos tiempo leyendo documentación.
* **Corto**: Minimiza la duplicación de código. Múltiples funcionalidades desde cada declaración de parámetro. Menos bugs.
* **Robusto**: Obtén código listo para producción. Con documentación interactiva automática.
@ -492,9 +492,7 @@ Para un ejemplo más completo incluyendo más funcionalidades, ve al <a href="ht
### Despliega tu app (opcional) { #deploy-your-app-optional }
Opcionalmente puedes desplegar tu app de FastAPI en [FastAPI Cloud](https://fastapicloud.com), ve y únete a la lista de espera si no lo has hecho. 🚀
Si ya tienes una cuenta de **FastAPI Cloud** (te invitamos desde la lista de espera 😉), puedes desplegar tu aplicación con un solo comando.
Opcionalmente puedes desplegar tu app de FastAPI en [FastAPI Cloud](https://fastapicloud.com) con un solo comando. 🚀
<div class="termy">
@ -510,6 +508,8 @@ Deploying to FastAPI Cloud...
</div>
La CLI detectará automáticamente tu aplicación de FastAPI y la desplegará en la nube. Si no has iniciado sesión, se abrirá tu navegador para completar el proceso de autenticación.
¡Eso es todo! Ahora puedes acceder a tu app en esa URL. ✨
#### Acerca de FastAPI Cloud { #about-fastapi-cloud }

22
docs/es/docs/tutorial/bigger-applications.md

@ -396,9 +396,9 @@ Incluirá todas las rutas de ese router como parte de ella.
/// note | Detalles Técnicos
En realidad creará internamente una *path operation* para cada *path operation* que fue declarada en el `APIRouter`.
FastAPI mantiene activo el `APIRouter` original y sus `APIRoute`s cuando el router se incluye en la aplicación principal.
Así, detrás de escena, funcionará como si todo fuera la misma única app.
Eso significa que las subclases personalizadas de `APIRouter` y `APIRoute` aún pueden participar después de incluir el router.
///
@ -406,7 +406,7 @@ Así, detrás de escena, funcionará como si todo fuera la misma única app.
No tienes que preocuparte por el rendimiento al incluir routers.
Esto tomará microsegundos y solo sucederá al inicio.
Esto está diseñado para ser liviano y evitar añadir sobrecarga a cada request.
Así que no afectará el rendimiento. ⚡
@ -461,7 +461,7 @@ Los `APIRouter`s no están "montados", no están aislados del resto de la aplica
Esto se debe a que queremos incluir sus *path operations* en el esquema de OpenAPI y las interfaces de usuario.
Como no podemos simplemente aislarlos y "montarlos" independientemente del resto, las *path operations* se "clonan" (se vuelven a crear), no se incluyen directamente.
FastAPI mantiene los routers y *path operations* originales activos, y combina los prefijos del router, dependencias, tags, responses y otros metadatos al manejar requests y generar OpenAPI.
///
@ -532,4 +532,16 @@ De la misma manera que puedes incluir un `APIRouter` en una aplicación `FastAPI
router.include_router(other_router)
```
Asegúrate de hacerlo antes de incluir `router` en la app de `FastAPI`, para que las *path operations* de `other_router` también se incluyan.
Puedes hacerlo antes o después de incluir `router` en la app de `FastAPI`. FastAPI seguirá incluyendo las *path operations* de `other_router` en el ruteo y en OpenAPI.
Lo mismo aplica a las *path operations* añadidas después a los routers. También serán visibles a través de la inclusión anterior.
/// warning | Detalles Técnicos
Evita mutar directamente `router.routes` después de incluir un router. FastAPI trata la inclusión de routers como “en vivo”, así que el router original y sus rutas siguen formando parte del ruteo y de la generación de OpenAPI.
Usa APIs documentadas como los decoradores de *path operations* y `.include_router()` para agregar rutas y routers.
Trata `router.routes` como un árbol de rutas de nivel bajo que puede contener definiciones de rutas y routers incluidos, y evita depender de él como una lista plana de *path operations* finales.
///

4
docs/es/docs/tutorial/body-multiple-params.md

@ -108,7 +108,7 @@ Por ejemplo:
{* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
/// info | Información
/// note | Nota
`Body` también tiene todos los mismos parámetros de validación y metadatos extras que `Query`, `Path` y otros que verás luego.
@ -123,7 +123,7 @@ Por defecto, **FastAPI** esperará su cuerpo directamente.
Pero si deseas que espere un JSON con una clave `item` y dentro de ella los contenidos del modelo, como lo hace cuando declaras parámetros de cuerpo extra, puedes usar el parámetro especial `Body` `embed`:
```Python
item: Item = Body(embed=True)
item: Annotated[Item, Body(embed=True)]
```
como en:

4
docs/es/docs/tutorial/body-nested-models.md

@ -136,7 +136,7 @@ Esto esperará (convertirá, validará, documentará, etc.) un cuerpo JSON como:
}
```
/// info | Información
/// note | Nota
Nota cómo la clave `images` ahora tiene una lista de objetos de imagen.
@ -148,7 +148,7 @@ Puedes definir modelos anidados tan profundamente como desees:
{* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *}
/// info | Información
/// note | Nota
Observa cómo `Offer` tiene una lista de `Item`s, que a su vez tienen una lista opcional de `Image`s

2
docs/es/docs/tutorial/body.md

@ -8,7 +8,7 @@ Tu API casi siempre tiene que enviar un **response** body. Pero los clientes no
Para declarar un **request** body, usas modelos de [Pydantic](https://docs.pydantic.dev/) con todo su poder y beneficios.
/// info | Información
/// note | Nota
Para enviar datos, deberías usar uno de estos métodos: `POST` (el más común), `PUT`, `DELETE` o `PATCH`.

2
docs/es/docs/tutorial/cookie-param-models.md

@ -32,7 +32,7 @@ Puedes ver las cookies definidas en la UI de la documentación en `/docs`:
<img src="/img/tutorial/cookie-param-models/image01.png">
</div>
/// info | Información
/// note | Nota
Ten en cuenta que, como los **navegadores manejan las cookies** de maneras especiales y detrás de escenas, **no** permiten fácilmente que **JavaScript** las toque.

4
docs/es/docs/tutorial/cookie-params.md

@ -24,13 +24,13 @@ Pero recuerda que cuando importas `Query`, `Path`, `Cookie` y otros desde `fasta
///
/// info | Información
/// note | Nota
Para declarar cookies, necesitas usar `Cookie`, porque de lo contrario los parámetros serían interpretados como parámetros de query.
///
/// info | Información
/// note | Nota
Ten en cuenta que, como **los navegadores manejan las cookies** de formas especiales y por detrás, **no** permiten fácilmente que **JavaScript** las toque.

6
docs/es/docs/tutorial/debugging.md

@ -62,7 +62,7 @@ from myapp import app
# Algún código adicional
```
en ese caso, la variable creada automáticamente dentro de `myapp.py` no tendrá la variable `__name__` con un valor de `"__main__"`.
en ese caso, la variable creada automáticamente `__name__` dentro de `myapp.py` no tendrá el valor `"__main__"`.
Así que, la línea:
@ -72,7 +72,7 @@ Así que, la línea:
no se ejecutará.
/// info | Información
/// note | Nota
Para más información, revisa [la documentación oficial de Python](https://docs.python.org/3/library/__main__.html).
@ -88,7 +88,7 @@ Por ejemplo, en Visual Studio Code, puedes:
* Ir al panel de "Debug".
* "Add configuration...".
* Seleccionar "Python".
* Seleccionar "Python"
* Ejecutar el depurador con la opción "`Python: Current File (Integrated Terminal)`".
Luego, iniciará el servidor con tu código **FastAPI**, deteniéndose en tus puntos de interrupción, etc.

2
docs/es/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md

@ -28,7 +28,7 @@ También puede ayudar a evitar confusiones para nuevos desarrolladores que vean
///
/// info | Información
/// note | Nota
En este ejemplo usamos headers personalizados inventados `X-Key` y `X-Token`.

2
docs/es/docs/tutorial/dependencies/dependencies-with-yield.md

@ -170,7 +170,7 @@ participant tasks as Background tasks
end
```
/// info | Información
/// note | Nota
Solo **un response** será enviado al cliente. Podría ser uno de los responses de error o será el response de la *path operation*.

6
docs/es/docs/tutorial/dependencies/index.md

@ -1,6 +1,6 @@
# Dependencias { #dependencies }
**FastAPI** tiene un sistema de **<dfn title="también conocido como componentes, recursos, proveedores, servicios, inyectables">Inyección de Dependencias</dfn>** muy poderoso pero intuitivo.
**FastAPI** tiene un sistema de **<dfn title="también conocido como: componentes, recursos, proveedores, servicios, inyectables">Inyección de Dependencias</dfn>** muy poderoso pero intuitivo.
Está diseñado para ser muy simple de usar, y para hacer que cualquier desarrollador integre otros componentes con **FastAPI** de forma muy sencilla.
@ -51,7 +51,7 @@ En este caso, esta dependencia espera:
Y luego solo devuelve un `dict` que contiene esos valores.
/// info | Información
/// note | Nota
FastAPI agregó soporte para `Annotated` (y comenzó a recomendarlo) en la versión 0.95.0.
@ -106,7 +106,7 @@ common_parameters --> read_users
De esta manera escribes código compartido una vez y **FastAPI** se encarga de llamarlo para tus *path operations*.
/// check | Revisa
/// tip | Consejo
Nota que no tienes que crear una clase especial y pasarla en algún lugar a **FastAPI** para "registrarla" o algo similar.

2
docs/es/docs/tutorial/dependencies/sub-dependencies.md

@ -35,7 +35,7 @@ Entonces podemos usar la dependencia con:
{* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
/// info | Información
/// note | Nota
Fíjate que solo estamos declarando una dependencia en la *path operation function*, `query_or_cookie_extractor`.

34
docs/es/docs/tutorial/first-steps.md

@ -180,7 +180,7 @@ lo cual sería equivalente a:
from backend.main import app
```
### `fastapi dev` con path { #fastapi-dev-with-path }
### `fastapi dev` con path o con la opción de CLI `--entrypoint` { #fastapi-dev-with-path-or-with-entrypoint-cli-option }
También puedes pasar el path del archivo al comando `fastapi dev`, y adivinará el objeto app de FastAPI que debe usar:
@ -188,29 +188,19 @@ También puedes pasar el path del archivo al comando `fastapi dev`, y adivinará
$ fastapi dev main.py
```
Pero tendrías que recordar pasar el path correcto cada vez que llames al comando `fastapi`.
Además, otras herramientas podrían no ser capaces de encontrarlo, por ejemplo la [Extensión de VS Code](../editor-support.md) o [FastAPI Cloud](https://fastapicloud.com), así que se recomienda usar el `entrypoint` en `pyproject.toml`.
### Despliega tu app (opcional) { #deploy-your-app-optional }
Opcionalmente puedes desplegar tu app de FastAPI en [FastAPI Cloud](https://fastapicloud.com), ve y únete a la lista de espera si aún no lo has hecho. 🚀
Si ya tienes una cuenta de **FastAPI Cloud** (te invitamos desde la lista de espera 😉), puedes desplegar tu aplicación con un solo comando.
Antes de desplegar, asegúrate de haber iniciado sesión:
<div class="termy">
O, también puedes pasar la opción `--entrypoint` al comando `fastapi dev`:
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
$ fastapi dev --entrypoint main:app
```
</div>
Pero tendrías que recordar pasar el path o entrypoint correctos cada vez que llames al comando `fastapi`.
Además, otras herramientas podrían no ser capaces de encontrarlo, por ejemplo la [Extensión de VS Code](../editor-support.md) o [FastAPI Cloud](https://fastapicloud.com), así que se recomienda usar el `entrypoint` en `pyproject.toml`.
Luego despliega tu app:
### Despliega tu app (opcional) { #deploy-your-app-optional }
Opcionalmente puedes desplegar tu app de FastAPI en [FastAPI Cloud](https://fastapicloud.com) con un solo comando. 🚀
<div class="termy">
@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
</div>
La CLI detectará automáticamente tu aplicación de FastAPI y la desplegará en la nube. Si no has iniciado sesión, se abrirá tu navegador para completar el proceso de autenticación.
¡Eso es todo! Ahora puedes acceder a tu app en esa URL. ✨
## Recapitulación, paso a paso { #recap-step-by-step }
@ -270,7 +262,7 @@ https://example.com/items/foo
/items/foo
```
/// info | Información
/// note | Nota
Un "path" también es comúnmente llamado "endpoint" o "ruta".
@ -322,7 +314,7 @@ El `@app.get("/")` le dice a **FastAPI** que la función justo debajo se encarga
* el path `/`
* usando una <dfn title="un método HTTP GET"><code>get</code> operación</dfn>
/// info | Información sobre `@decorator`
/// note | Información sobre `@decorator`
Esa sintaxis `@algo` en Python se llama un "decorador".

2
docs/es/docs/tutorial/metadata.md

@ -74,7 +74,7 @@ Usa el parámetro `tags` con tus *path operations* (y `APIRouter`s) para asignar
{* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
/// info | Información
/// note | Nota
Lee más sobre etiquetas en [Configuración de Path Operation](path-operation-configuration.md#tags).

4
docs/es/docs/tutorial/path-operation-configuration.md

@ -72,13 +72,13 @@ Puedes especificar la descripción del response con el parámetro `response_desc
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
/// info | Información
/// note | Nota
Ten en cuenta que `response_description` se refiere específicamente al response, mientras que `description` se refiere a la *path operation* en general.
///
/// check | Revisa
/// tip | Consejo
OpenAPI especifica que cada *path operation* requiere una descripción de response.

4
docs/es/docs/tutorial/path-params-numeric-validations.md

@ -8,7 +8,7 @@ Primero, importa `Path` de `fastapi`, e importa `Annotated`:
{* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}
/// info | Información
/// note | Nota
FastAPI agregó soporte para `Annotated` (y comenzó a recomendar su uso) en la versión 0.95.0.
@ -131,7 +131,7 @@ Y también puedes declarar validaciones numéricas:
* `lt`: `l`ess `t`han
* `le`: `l`ess than or `e`qual
/// info | Información
/// note | Nota
`Query`, `Path` y otras clases que verás más adelante son subclases de una clase común `Param`.

10
docs/es/docs/tutorial/path-params.md

@ -20,7 +20,7 @@ Puedes declarar el tipo de un parámetro de path en la función, usando anotacio
En este caso, `item_id` se declara como un `int`.
/// check | Revisa
/// tip | Consejo
Esto te dará soporte del editor dentro de tu función, con chequeo de errores, autocompletado, etc.
@ -34,7 +34,7 @@ Si ejecutas este ejemplo y abres tu navegador en [http://127.0.0.1:8000/items/3]
{"item_id":3}
```
/// check | Revisa
/// tip | Consejo
Nota que el valor que tu función recibió (y devolvió) es `3`, como un `int` de Python, no un string `"3"`.
@ -66,7 +66,7 @@ porque el parámetro de path `item_id` tenía un valor de `"foo"`, que no es un
El mismo error aparecería si proporcionaras un `float` en lugar de un `int`, como en: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
/// check | Revisa
/// tip | Consejo
Entonces, con la misma declaración de tipo de Python, **FastAPI** te ofrece validación de datos.
@ -82,7 +82,7 @@ Y cuando abras tu navegador en [http://127.0.0.1:8000/docs](http://127.0.0.1:800
<img src="/img/tutorial/path-params/image01.png">
/// check | Revisa
/// tip | Consejo
Nuevamente, solo con esa misma declaración de tipo de Python, **FastAPI** te ofrece documentación automática e interactiva (integrando Swagger UI).
@ -130,7 +130,7 @@ La primera siempre será utilizada ya que el path coincide primero.
## Valores predefinidos { #predefined-values }
Si tienes una *path operation* que recibe un *path parameter*, pero quieres que los valores posibles válidos del *path parameter* estén predefinidos, puedes usar un <abbr title="Enumeration – Enumeración">`Enum`</abbr> estándar de Python.
Si tienes una *path operation* que recibe un *path parameter*, pero quieres que los valores posibles válidos del *path parameter* estén predefinidos, puedes usar un <abbr title="Enumeración">`Enum`</abbr> estándar de Python.
### Crear una clase `Enum` { #create-an-enum-class }

6
docs/es/docs/tutorial/query-params-str-validations.md

@ -29,7 +29,7 @@ Para lograr eso, primero importa:
{* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *}
/// info | Información
/// note | Nota
FastAPI añadió soporte para `Annotated` (y empezó a recomendarlo) en la versión 0.95.0.
@ -298,7 +298,7 @@ También puedes usar `list` directamente en lugar de `list[str]`:
Ten en cuenta que en este caso, FastAPI no comprobará el contenido de la list.
Por ejemplo, `list[int]` comprobaría (y documentaría) que el contenido de la list son enteros. Pero `list` sola no lo haría.
Por ejemplo, `list[int]` comprobaría (and documentaría) que el contenido de la list son enteros. Pero `list` sola no lo haría.
///
@ -382,7 +382,7 @@ Por ejemplo, este validador personalizado comprueba que el ID del ítem empiece
{* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
/// info | Información
/// note | Nota
Esto está disponible con Pydantic versión 2 o superior. 😎

2
docs/es/docs/tutorial/query-params.md

@ -65,7 +65,7 @@ De la misma manera, puedes declarar parámetros de query opcionales, establecien
En este caso, el parámetro de función `q` será opcional y será `None` por defecto.
/// check | Revisa
/// tip | Consejo
Además, nota que **FastAPI** es lo suficientemente inteligente para notar que el parámetro de path `item_id` es un parámetro de path y `q` no lo es, por lo tanto, es un parámetro de query.

4
docs/es/docs/tutorial/request-files.md

@ -2,7 +2,7 @@
Puedes definir archivos que serán subidos por el cliente utilizando `File`.
/// info | Información
/// note | Nota
Para recibir archivos subidos, primero instala [`python-multipart`](https://github.com/Kludex/python-multipart).
@ -28,7 +28,7 @@ Crea parámetros de archivo de la misma manera que lo harías para `Body` o `For
{* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *}
/// info | Información
/// note | Nota
`File` es una clase que hereda directamente de `Form`.

2
docs/es/docs/tutorial/request-form-models.md

@ -2,7 +2,7 @@
Puedes usar **modelos de Pydantic** para declarar **campos de formulario** en FastAPI.
/// info | Información
/// note | Nota
Para usar formularios, primero instala [`python-multipart`](https://github.com/Kludex/python-multipart).

2
docs/es/docs/tutorial/request-forms-and-files.md

@ -2,7 +2,7 @@
Puedes definir archivos y campos de formulario al mismo tiempo usando `File` y `Form`.
/// info | Información
/// note | Nota
Para recibir archivos subidos y/o form data, primero instala [`python-multipart`](https://github.com/Kludex/python-multipart).

8
docs/es/docs/tutorial/request-forms.md

@ -1,8 +1,8 @@
# Datos de formulario { #form-data }
# Form Data { #form-data }
Cuando necesitas recibir campos de formulario en lugar de JSON, puedes usar `Form`.
/// info | Información
/// note | Nota
Para usar formularios, primero instala [`python-multipart`](https://github.com/Kludex/python-multipart).
@ -32,7 +32,7 @@ La <dfn title="especificación">especificación</dfn> requiere que los campos se
Con `Form` puedes declarar las mismas configuraciones que con `Body` (y `Query`, `Path`, `Cookie`), incluyendo validación, ejemplos, un alias (por ejemplo, `user-name` en lugar de `username`), etc.
/// info | Información
/// note | Nota
`Form` es una clase que hereda directamente de `Body`.
@ -70,4 +70,4 @@ Esto no es una limitación de **FastAPI**, es parte del protocolo HTTP.
## Recapitulación { #recap }
Usa `Form` para declarar parámetros de entrada de datos de formulario.
Usa `Form` para declarar parámetros de entrada de form data.

4
docs/es/docs/tutorial/response-model.md

@ -72,7 +72,7 @@ Aquí estamos declarando un modelo `UserIn`, contendrá una contraseña en texto
{* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *}
/// info | Información
/// note | Nota
Para usar `EmailStr`, primero instala [`email-validator`](https://github.com/JoshData/python-email-validator).
@ -251,7 +251,7 @@ Entonces, si envías un request a esa *path operation* para el ítem con ID `foo
}
```
/// info | Información
/// note | Nota
También puedes usar:

2
docs/es/docs/tutorial/response-status-code.md

@ -18,7 +18,7 @@ Observa que `status_code` es un parámetro del método "decorador" (`get`, `post
El parámetro `status_code` recibe un número con el código de estado HTTP.
/// info | Información
/// note | Nota
`status_code` también puede recibir un `IntEnum`, como por ejemplo el [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus) de Python.

6
docs/es/docs/tutorial/schema-extra-example.md

@ -24,7 +24,7 @@ Por ejemplo, podrías usarlo para añadir metadatos para una interfaz de usuario
///
/// info | Información
/// note | Nota
OpenAPI 3.1.0 (usado desde FastAPI 0.99.0) añadió soporte para `examples`, que es parte del estándar de **JSON Schema**.
@ -155,7 +155,7 @@ OpenAPI también añadió los campos `example` y `examples` a otras partes de la
* `File()`
* `Form()`
/// info | Información
/// note | Nota
Este viejo parámetro `examples` específico de OpenAPI ahora es `openapi_examples` desde FastAPI `0.103.0`.
@ -171,7 +171,7 @@ Y ahora este nuevo campo `examples` tiene precedencia sobre el viejo campo únic
Este nuevo campo `examples` en JSON Schema es **solo una `list`** de ejemplos, no un dict con metadatos adicionales como en los otros lugares en OpenAPI (descritos arriba).
/// info | Información
/// note | Nota
Incluso después de que OpenAPI 3.1.0 fue lanzado con esta nueva integración más sencilla con JSON Schema, por un tiempo, Swagger UI, la herramienta que proporciona la documentación automática, no soportaba OpenAPI 3.1.0 (lo hace desde la versión 5.0.0 🎉).

10
docs/es/docs/tutorial/security/first-steps.md

@ -24,7 +24,7 @@ Copia el ejemplo en un archivo `main.py`:
## Ejecútalo { #run-it }
/// info | Información
/// note | Nota
El paquete [`python-multipart`](https://github.com/Kludex/python-multipart) se instala automáticamente con **FastAPI** cuando ejecutas el comando `pip install "fastapi[standard]"`.
@ -60,7 +60,7 @@ Verás algo así:
<img src="/img/tutorial/security/image01.png">
/// check | ¡Botón de autorización!
/// tip | ¡Botón de autorización!
Ya tienes un nuevo y brillante botón de "Authorize".
@ -118,7 +118,7 @@ Así que, revisémoslo desde ese punto de vista simplificado:
En este ejemplo vamos a usar **OAuth2**, con el flujo **Password**, usando un token **Bearer**. Hacemos eso utilizando la clase `OAuth2PasswordBearer`.
/// info | Información
/// note | Nota
Un token "bearer" no es la única opción.
@ -148,7 +148,7 @@ Este parámetro no crea ese endpoint / *path operation*, pero declara que la URL
Pronto también crearemos la verdadera *path operation*.
/// info | Información
/// note | Nota
Si eres un "Pythonista" muy estricto, tal vez no te guste el estilo del nombre del parámetro `tokenUrl` en lugar de `token_url`.
@ -176,7 +176,7 @@ Esta dependencia proporcionará un `str` que se asigna al parámetro `token` de
**FastAPI** sabrá que puede usar esta dependencia para definir un "security scheme" en el esquema OpenAPI (y en los docs automáticos del API).
/// info | Detalles técnicos
/// note | Detalles técnicos
**FastAPI** sabrá que puede usar la clase `OAuth2PasswordBearer` (declarada en una dependencia) para definir el esquema de seguridad en OpenAPI porque hereda de `fastapi.security.oauth2.OAuth2`, que a su vez hereda de `fastapi.security.base.SecurityBase`.

2
docs/es/docs/tutorial/security/get-current-user.md

@ -50,7 +50,7 @@ Aquí **FastAPI** no se confundirá porque estás usando `Depends`.
///
/// check | Revisa
/// tip | Consejo
El modo en que este sistema de dependencias está diseñado nos permite tener diferentes dependencias (diferentes "dependables") que todas devuelven un modelo `User`.

4
docs/es/docs/tutorial/security/oauth2-jwt.md

@ -42,7 +42,7 @@ $ pip install pyjwt
</div>
/// info | Información
/// note | Nota
Si planeas usar algoritmos de firma digital como RSA o ECDSA, deberías instalar la dependencia del paquete de criptografía `pyjwt[crypto]`.
@ -213,7 +213,7 @@ Usando las credenciales:
Usuario: `johndoe`
Contraseña: `secret`
/// check | Revisa
/// tip | Consejo
Observa que en ninguna parte del código está la contraseña en texto claro "`secret`", solo tenemos la versión con hash.

10
docs/es/docs/tutorial/security/simple-oauth2.md

@ -32,7 +32,7 @@ Normalmente se utilizan para declarar permisos de seguridad específicos, por ej
* `instagram_basic` es usado por Facebook / Instagram.
* `https://www.googleapis.com/auth/drive` es usado por Google.
/// info | Información
/// note | Nota
En OAuth2 un "scope" es solo un string que declara un permiso específico requerido.
@ -72,7 +72,7 @@ Si necesitas imponerlo, utiliza `OAuth2PasswordRequestFormStrict` en lugar de `O
* Un `client_id` opcional (no lo necesitamos para nuestro ejemplo).
* Un `client_secret` opcional (no lo necesitamos para nuestro ejemplo).
/// info | Información
/// note | Nota
`OAuth2PasswordRequestForm` no es una clase especial para **FastAPI** como lo es `OAuth2PasswordBearer`.
@ -94,7 +94,7 @@ No estamos usando `scopes` en este ejemplo, pero la funcionalidad está ahí si
///
Ahora, obtén los datos del usuario desde la base de datos (falsa), usando el `username` del campo del form.
Ahora, obtén los datos del usuario desde la base de datos (falsa), usando el `username` del campo del formulario.
Si no existe tal usuario, devolvemos un error diciendo "Incorrect username or password".
@ -144,7 +144,7 @@ UserInDB(
)
```
/// info | Información
/// note | Nota
Para una explicación más completa de `**user_dict` revisa en [la documentación para **Extra Models**](../extra-models.md#about-user-in-dict).
@ -196,7 +196,7 @@ Así que, en nuestro endpoint, solo obtendremos un usuario si el usuario existe,
{* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *}
/// info | Información
/// note | Nota
El header adicional `WWW-Authenticate` con el valor `Bearer` que estamos devolviendo aquí también es parte de la especificación.

2
docs/es/docs/tutorial/server-sent-events.md

@ -4,7 +4,7 @@ Puedes enviar datos en streaming al cliente usando **Server-Sent Events** (SSE).
Esto es similar a [Stream JSON Lines](stream-json-lines.md), pero usa el formato `text/event-stream`, que los navegadores soportan de forma nativa con la [`EventSource` API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
/// info | Información
/// note | Nota
Añadido en FastAPI 0.135.0.

4
docs/es/docs/tutorial/stream-json-lines.md

@ -2,7 +2,7 @@
Podrías tener una secuencia de datos que quieras enviar en un "**stream**", podrías hacerlo con **JSON Lines**.
/// info | Información
/// note | Nota
Añadido en FastAPI 0.134.0.
@ -48,7 +48,7 @@ Una response tendría un tipo de contenido `application/jsonl` (en lugar de `app
Es muy similar a un array JSON (equivalente de una list de Python), pero en lugar de estar envuelto en `[]` y tener `,` entre los ítems, tiene **un objeto JSON por línea**, separados por un carácter de nueva línea.
/// info | Información
/// note | Nota
El punto importante es que tu app podrá producir cada línea a su turno, mientras el cliente consume las líneas anteriores.

6
docs/es/docs/tutorial/testing.md

@ -1,4 +1,4 @@
# Testing { #testing }
# Pruebas { #testing }
Gracias a [Starlette](https://www.starlette.dev/testclient/), escribir pruebas para aplicaciones de **FastAPI** es fácil y agradable.
@ -8,7 +8,7 @@ Con él, puedes usar [pytest](https://docs.pytest.org/) directamente con **FastA
## Usando `TestClient` { #using-testclient }
/// info | Información
/// note | Nota
Para usar `TestClient`, primero instala [`httpx`](https://www.python-httpx.org).
@ -142,7 +142,7 @@ Por ejemplo:
Para más información sobre cómo pasar datos al backend (usando `httpx` o el `TestClient`) revisa la [documentación de HTTPX](https://www.python-httpx.org).
/// info | Información
/// note | Nota
Ten en cuenta que el `TestClient` recibe datos que pueden ser convertidos a JSON, no modelos de Pydantic.

4
docs/ja/docs/advanced/additional-responses.md

@ -34,7 +34,7 @@ FastAPI はそのモデルから JSON Schema を生成し、OpenAPI の適切な
///
/// info | 情報
/// note | 備考
`model` キーは OpenAPI の一部ではありません。
@ -183,7 +183,7 @@ FastAPI はそこから Pydantic モデルを取得して JSON Schema を生成
///
/// info | 情報
/// note | 備考
`responses` パラメータで明示的に別のメディアタイプを指定しない限り、FastAPI はレスポンスがメインのレスポンスクラスと同じメディアタイプ(デフォルトは `application/json`)であるとみなします。

2
docs/ja/docs/advanced/advanced-dependencies.md

@ -98,7 +98,7 @@ FastAPI 0.118.0 より前では、`yield` を使う依存関係を使用する
この挙動は 0.118.0 で元に戻され、`yield` の後の終了コードはレスポンス送信後に実行されるようになりました。
/// info | 情報
/// note | 備考
以下で見るように、これはバージョン 0.106.0 より前の挙動ととても似ていますが、いくつかのコーナーケースに対する改良とバグ修正が含まれています。

4
docs/ja/docs/advanced/custom-response.md

@ -41,7 +41,7 @@ FastAPI はデフォルトでJSONレスポンスを返します。
{* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
/// info | 情報
/// note | 備考
パラメータ `response_class` は、レスポンスの「メディアタイプ」を定義するためにも使用されます。
@ -65,7 +65,7 @@ FastAPI はデフォルトでJSONレスポンスを返します。
///
/// info | 情報
/// note | 備考
もちろん、実際の `Content-Type` ヘッダーやステータスコードなどは、返した `Response` オブジェクトに由来します。

2
docs/ja/docs/advanced/dataclasses.md

@ -18,7 +18,7 @@ FastAPI は **Pydantic** の上に構築されており、これまでにリク
これは Pydantic モデルの場合と同じように動作します。内部的にも同様に Pydantic を使って実現されています。
/// info | 情報
/// note | 備考
dataclasses は、Pydantic モデルができることをすべては行えない点に留意してください。

4
docs/ja/docs/advanced/events.md

@ -120,7 +120,7 @@ async with lifespan(app):
ここでは、`shutdown` のイベントハンドラ関数が、テキスト行 `"Application shutdown"` をファイル `log.txt` に書き込みます。
/// info | 情報
/// note | 情報
`open()` 関数の `mode="a"` は「追加」(append)を意味します。つまり、そのファイルに既にある内容を上書きせず、行が後ろに追記されます。
@ -152,7 +152,7 @@ async with lifespan(app):
内部的には、ASGI の技術仕様において、これは [Lifespan プロトコル](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) の一部であり、`startup` と `shutdown` というイベントが定義されています。
/// info | 情報
/// note | 情報
Starlette の `lifespan` ハンドラについては、[Starlette の Lifespan ドキュメント](https://www.starlette.dev/lifespan/)で詳しく読むことができます。

1
docs/ja/docs/advanced/generate-clients.md

@ -31,7 +31,6 @@ FastAPI は自動的に **OpenAPI 3.1** の仕様を生成します。したが
例えば、次のようなものがあります:
* [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi)
これらのソリューションの中にはオープンソースや無料枠を提供するものもあり、金銭的コミットメントなしで試すことができます。他の商用 SDK ジェネレータも存在し、オンラインで見つけられます。🤓

4
docs/ja/docs/advanced/openapi-callbacks.md

@ -167,13 +167,13 @@ JSON ボディは次のような内容です:
これで、上で作成したコールバック用ルーター内に、必要なコールバックの *path operation(s)*(*外部開発者* が *外部 API* に実装すべきもの)が用意できました。
次に、*あなたの API の path operation デコレータ*の `callbacks` パラメータに、そのコールバック用ルーターの属性 `.routes`(実体はルート/*path operations* の `list`を渡します:
次に、*あなたの API の path operation デコレータ*の `callbacks` パラメータに、そのコールバック用ルーターの属性 `.routes` を渡します:
{* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *}
/// tip | 豆知識
`callback=` に渡すのはルーター本体(`invoices_callback_router`)ではなく、属性 `.routes`(`invoices_callback_router.routes`)である点に注意してください。
`callbacks=` に渡すのはルーター本体(`invoices_callback_router`)ではなく、属性 `.routes`(`invoices_callback_router.routes`)である点に注意してください。FastAPI はそれらのルートを使ってコールバックの OpenAPI ドキュメントを生成します。
///

4
docs/ja/docs/advanced/openapi-webhooks.md

@ -22,7 +22,7 @@ Webhook の URL を登録する方法や実際にリクエストを送るコー
これにより、ユーザーがあなたの **Webhook** リクエストを受け取るための**API を実装**するのが大幅に簡単になります。場合によっては、ユーザーが自分たちの API コードを自動生成できるかもしれません。
/// info | 情報
/// note | 備考
Webhook は OpenAPI 3.1.0 以上で利用可能で、FastAPI `0.99.0` 以上が対応しています。
@ -36,7 +36,7 @@ Webhook は OpenAPI 3.1.0 以上で利用可能で、FastAPI `0.99.0` 以上が
定義した webhook は **OpenAPI** スキーマおよび自動生成される **ドキュメント UI** に反映されます。
/// info | 情報
/// note | 備考
`app.webhooks` オブジェクトは実際には単なる `APIRouter` で、複数ファイルでアプリを構成する際に使うものと同じ型です。

12
docs/ja/docs/advanced/path-operation-advanced-configuration.md

@ -16,17 +16,11 @@ OpenAPIの「エキスパート」でなければ、これはおそらく必要
### *path operation関数* の名前をoperationIdとして使用する { #using-the-path-operation-function-name-as-the-operationid }
APIの関数名を `operationId` として利用したい場合、すべてのAPI関数をイテレーションし、各 *path operation*`operation_id``APIRoute.name` で上書きすれば可能です。
API の関数名を `operationId` として使いたい場合は、`FastAPI` にカスタムの `generate_unique_id_function` を渡せます。
すべての *path operation* を追加した後に行うべきです。
この関数は各 `APIRoute` を受け取り、その *path operation* で使う `operationId` を返します。
{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2, 12:21, 24] *}
/// tip | 豆知識
`app.openapi()` を手動で呼び出す場合、その前に `operationId` を更新するべきです。
///
{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2,5:6,9] *}
/// warning | 注意

2
docs/ja/docs/advanced/response-directly.md

@ -18,7 +18,7 @@
実際は、`Response` やそのサブクラスを返すことができます。
/// info
/// note
`JSONResponse` それ自体は、`Response` のサブクラスです。

4
docs/ja/docs/advanced/security/oauth2-scopes.md

@ -46,7 +46,7 @@ OpenAPI(例: API ドキュメント)では、「セキュリティスキー
- `instagram_basic` は Facebook / Instagram で使われています。
- `https://www.googleapis.com/auth/drive` は Google で使われています。
/// info | 情報
/// note | 備考
OAuth2 において「スコープ」は、必要な特定の権限を宣言する単なる文字列です。
@ -126,7 +126,7 @@ OAuth2 にとっては、単に文字列に過ぎません。
{* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *}
/// info | 技術詳細
/// note | 技術詳細
`Security` は実際には `Depends` のサブクラスで、後述する追加パラメータが 1 つあるだけです。

4
docs/ja/docs/advanced/stream-data.md

@ -4,7 +4,7 @@ JSON として構造化できるデータをストリームしたい場合は、
しかし、純粋なバイナリデータや文字列をストリームしたい場合は、次のようにできます。
/// info | 情報
/// note | 情報
FastAPI 0.134.0 で追加されました。
@ -90,7 +90,7 @@ FastAPI は各データチャンクをそのまま `StreamingResponse` に渡し
また、多くの場合、ディスクやネットワークから読み出すため、読み取りはブロッキング(イベントループをブロックし得る)処理になります。
/// info | 情報
/// note | 情報
上記の例は例外で、`io.BytesIO` は既にメモリ上にあるため、読み取りが何かをブロックすることはありません。

2
docs/ja/docs/advanced/strict-content-type.md

@ -81,7 +81,7 @@ http://localhost:8000/v1/agents/multivac
この設定では、`Content-Type` ヘッダーがないリクエストでもボディが JSON として解析されます。これは古いバージョンの FastAPI と同じ挙動です。
/// info | 情報
/// note | 備考
この挙動と設定は FastAPI 0.132.0 で追加されました。

2
docs/ja/docs/advanced/websockets.md

@ -111,7 +111,7 @@ WebSocketエンドポイントでは、`fastapi` から以下をインポート
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
/// info | 情報
/// note | 備考
これはWebSocketであるため、`HTTPException` を発生させることはあまり意味がありません。代わりに `WebSocketException` を発生させます。

2
docs/ja/docs/advanced/wsgi.md

@ -6,7 +6,7 @@
## `WSGIMiddleware` の使用 { #using-wsgimiddleware }
/// info | 情報
/// note | 備考
これには `a2wsgi` のインストールが必要です。例: `pip install a2wsgi`

6
docs/ja/docs/deployment/docker.md

@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
</div>
/// info | 情報
/// note | 備考
パッケージの依存関係を定義しインストールするためのフォーマットやツールは他にもあります。
@ -417,7 +417,7 @@ CMD ["fastapi", "run", "main.py", "--port", "80"]
コンテナという観点から、[デプロイのコンセプト](concepts.md)に共通するいくつかについて、もう一度説明しましょう。
コンテナは主に、アプリケーションの**ビルドとデプロイ**のプロセスを簡素化するためのツールですが、これらの**デプロイのコンセプト**を扱うための特定のアプローチを強制するものではなく、いくつかの戦略があります。
コンテナは主に、アプリケーションの**ビルドとデプロイ**のプロセスを簡素化するための工具ですが、これらの**デプロイのコンセプト**を扱うための特定のアプローチを強制するものではなく、いくつかの戦略があります。
**良いニュース**は、それぞれの異なる戦略には、すべてのデプロイメントのコンセプトをカバーする方法があるということです。🎉
@ -562,7 +562,7 @@ Docker Composeで**単一サーバ**(クラスタではない)にデプロ
複数の**コンテナ**があり、おそらくそれぞれが**単一のプロセス**を実行している場合(例えば、**Kubernetes**クラスタなど)、レプリケートされたワーカーコンテナを実行する**前に**、単一のコンテナで**事前のステップ**の作業を行う**別のコンテナ**を持ちたいと思うでしょう。
/// info | 情報
/// note | 備考
もしKubernetesを使用している場合, これはおそらく[Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)でしょう。

24
docs/ja/docs/deployment/fastapicloud.md

@ -1,26 +1,6 @@
# FastAPI Cloud { #fastapi-cloud }
[FastAPI Cloud](https://fastapicloud.com) に **コマンド1つ** でデプロイできます。まだならウェイティングリストにご登録ください。🚀
## ログイン { #login }
すでに **FastAPI Cloud** アカウントをお持ちであることを確認してください(ウェイティングリストからご招待しています 😉)。
次にログインします:
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
## デプロイ { #deploy }
では、**コマンド1つ** でアプリをデプロイします:
[FastAPI Cloud](https://fastapicloud.com) に **コマンド1つ** で FastAPI アプリをデプロイできます。🚀
<div class="termy">
@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
</div>
CLI は FastAPI アプリケーションを自動検出してクラウドにデプロイします。ログインしていない場合は、認証を完了するためにブラウザが開きます。
以上です!その URL からアプリにアクセスできます。✨
## FastAPI Cloud について { #about-fastapi-cloud }

1
docs/ja/docs/deployment/manually.md

@ -56,7 +56,6 @@ FastAPI は、Python の Web フレームワークとサーバーのための標
* [Hypercorn](https://hypercorn.readthedocs.io/): HTTP/2 や Trio に対応する ASGI サーバーなど。
* [Daphne](https://github.com/django/daphne): Django Channels のために作られた ASGI サーバー。
* [Granian](https://github.com/emmett-framework/granian): Python アプリケーション向けの Rust 製 HTTP サーバー。
* [NGINX Unit](https://unit.nginx.org/howto/fastapi/): 軽量で多用途な Web アプリケーションランタイム。
## サーバーマシンとサーバープログラム { #server-machine-and-server-program }

2
docs/ja/docs/deployment/server-workers.md

@ -17,7 +17,7 @@
ここでは、`fastapi` コマンド、または `uvicorn` コマンドを直接使って、**ワーカープロセス**付きの **Uvicorn** を使う方法を紹介します。
/// info | 情報
/// note
DockerやKubernetesなどのコンテナを使用している場合は、次の章で詳しく説明します: [コンテナ内のFastAPI - Docker](docker.md)。

12
docs/ja/docs/how-to/extending-openapi.md

@ -25,9 +25,17 @@
- `openapi_version`: 使用する OpenAPI 仕様のバージョン。デフォルトは最新の `3.1.0`
- `summary`: API の短い概要。
- `description`: API の説明。Markdown を含めることができ、ドキュメントに表示されます。
- `routes`: ルートのリスト。登録済みの各 path operation です。`app.routes` から取得されます。
- `routes`: アプリケーションのルート。`app.routes` から取得されます。FastAPI はこれらを使用して、登録済みの path operation(取り込んだルーター由来のものも含む)を収集します。
/// info | 情報
/// tip | 技術詳細
`app.routes` はより低レベルなルートツリーです。最終的な `APIRoute` オブジェクトだけでなく、FastAPI が内部で使用する、取り込まれたルーター向けの候補ルートも含まれることがあります。
それでも `app.routes``get_openapi()` に渡せます。FastAPI はそのルートツリーを走査して、有効な path operation を収集します。
///
/// note | 備考
パラメータ `summary` は OpenAPI 3.1.0 以降で利用可能で、FastAPI 0.99.0 以降が対応しています。

6
docs/ja/docs/how-to/separate-openapi-schemas.md

@ -41,7 +41,7 @@
ドキュメントから試してレスポンスを確認すると、コードでは一方の `description` フィールドに何も追加していないにもかかわらず、JSON レスポンスにはデフォルト値(`null`)が含まれています:
<div class="screenshot">
<img src="/img/tutorial/separate-openapi-schemas/image02.png">
<img src="/img/tutorial/separate-openapi_schemas/image02.png">
</div>
つまりそのフィールドには **常に値があります**。値が `None`(JSON では `null`)になることがあるだけです。
@ -72,7 +72,7 @@
一方、`Item-Output` では、`description` は **必須**(赤いアスタリスクあり)です。
<div class="screenshot">
<img src="/img/tutorial/separate-openapi-schemas/image04.png">
<img src="/img/tutorial/separate-openapi_schemas/image04.png">
</div>
この **Pydantic v2** の機能により、API ドキュメントはより **正確** になり、自動生成されたクライアントや SDK もより正確になります。これにより、より良い **開発者エクスペリエンス** と一貫性が得られます。🎉
@ -85,7 +85,7 @@
その場合は、**FastAPI** のパラメータ `separate_input_output_schemas=False` でこの機能を無効化できます。
/// info | 情報
/// note | 備考
`separate_input_output_schemas` のサポートは FastAPI `0.102.0` で追加されました。🤓

6
docs/ja/docs/index.md

@ -492,9 +492,7 @@ item: Item
### アプリをデプロイ(任意) { #deploy-your-app-optional }
必要に応じて FastAPI アプリを [FastAPI Cloud](https://fastapicloud.com) にデプロイできます。まだの場合はウェイティングリストに参加してください。 🚀
すでに **FastAPI Cloud** アカウント(ウェイティングリストから招待されました 😉)がある場合は、1 コマンドでアプリケーションをデプロイできます。
1 コマンドで FastAPI アプリを [FastAPI Cloud](https://fastapicloud.com) にデプロイできます。 🚀
<div class="termy">
@ -510,6 +508,8 @@ Deploying to FastAPI Cloud...
</div>
CLI は自動的に FastAPI アプリケーションを検出し、クラウドへデプロイします。ログインしていない場合は、認証を完了するためにブラウザが開きます。
これで完了です!その URL でアプリにアクセスできます。 ✨
#### FastAPI Cloud について { #about-fastapi-cloud }

22
docs/ja/docs/tutorial/bigger-applications.md

@ -396,9 +396,9 @@ from .routers.users import router
/// note | 技術詳細
実際には、`APIRouter` で宣言された各 *path operation* ごとに内部的に *path operation* が作成されます。
FastAPI は、ルーターをメインアプリに取り込んだ後も、元の `APIRouter` とその `APIRoute` を有効なまま保持します。
つまり裏側では、すべてが同じ単一のアプリであるかのように動作します。
そのため、カスタムの `APIRouter``APIRoute` のサブクラスも、取り込み後に引き続き機能します。
///
@ -406,7 +406,7 @@ from .routers.users import router
ルーターを取り込んでもパフォーマンスを心配する必要はありません。
これは起動時にマイクロ秒で行われます。
これは軽量に設計され、各リクエストにオーバーヘッドを追加しないようになっています。
したがってパフォーマンスには影響しません。⚡
@ -461,7 +461,7 @@ from .routers.users import router
これは、それらの *path operations* を OpenAPI スキーマやユーザーインターフェースに含めたいからです。
完全に分離して独立に「マウント」できないため、*path operations* は直接取り込まれるのではなく「クローン(再作成)」されます。
FastAPI は元のルーターと *path operations* を有効なまま保持し、リクエスト処理や OpenAPI 生成の際に、ルーターの prefix、dependencies、tags、responses、その他のメタデータを組み合わせます。
///
@ -532,4 +532,16 @@ $ fastapi dev
router.include_router(other_router)
```
`router``FastAPI` アプリに取り込む前にこれを実行して、`other_router` の *path operations* も含まれるようにしてください。
これは、`router` を `FastAPI` アプリに取り込む前でも後でも実行できます。FastAPI は `other_router`*path operations* をルーティングと OpenAPI に含めます。
同様に、後からルーターに追加された *path operations* も、以前の取り込みを通して見えるようになります。
/// warning | 注意
`router` を取り込んだ後に、`router.routes` を直接ミューテートするのは避けてください。FastAPI はルーターの取り込みをライブとして扱うため、元のルーターとそのルートはルーティングと OpenAPI 生成の一部のままです。
ルートやルーターを追加するには、path operation デコレータや `.include_router()` などのドキュメント化された API を使用してください。
`router.routes` は、ルート定義や取り込まれたルーターを含みうる低レベルのルートツリーとして扱い、最終的な *path operations* のフラットな一覧として当てにしないでください。
///

4
docs/ja/docs/tutorial/body-multiple-params.md

@ -110,7 +110,7 @@ q: str | None = None
{* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
/// info | 情報
/// note | 備考
`Body`もまた、後述する `Query``Path` などと同様に、すべての追加検証パラメータとメタデータパラメータを持っています。
@ -125,7 +125,7 @@ Pydanticモデル`Item`の単一の`item`ボディパラメータしかないと
しかし、追加のボディパラメータを宣言したときのように、キー `item` を持つ JSON と、その中のモデル内容を期待したい場合は、特別な `Body` パラメータ `embed` を使うことができます:
```Python
item: Item = Body(embed=True)
item: Annotated[Item, Body(embed=True)]
```
以下において:

5
docs/ja/docs/tutorial/body-nested-models.md

@ -135,8 +135,7 @@ Pydanticモデルを`list`や`set`などのサブタイプとして使用する
]
}
```
/// info | 情報
/// note | 備考
`images`キーが画像オブジェクトのリストを持つようになったことに注目してください。
@ -148,7 +147,7 @@ Pydanticモデルを`list`や`set`などのサブタイプとして使用する
{* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *}
/// info | 情報
/// note | 備考
`Offer`は`Item`のリストであり、それらがさらにオプションの`Image`のリストを持っていることに注目してください。

2
docs/ja/docs/tutorial/body.md

@ -8,7 +8,7 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要
**リクエスト**ボディを宣言するには、[Pydantic](https://docs.pydantic.dev/) モデルを使用し、その強力な機能とメリットをすべて利用します。
/// info | 情報
/// note | 備考
データを送信するには、`POST`(より一般的)、`PUT`、`DELETE`、`PATCH` のいずれかを使用すべきです。

2
docs/ja/docs/tutorial/cookie-param-models.md

@ -32,7 +32,7 @@
<img src="/img/tutorial/cookie-param-models/image01.png">
</div>
/// info | 情報
/// note | 備考
**ブラウザがクッキーを処理し**ていますが、特別な方法で内部的に処理を行っているために、**JavaScript**からは簡単に操作**できない**ことに留意してください。

4
docs/ja/docs/tutorial/cookie-params.md

@ -24,13 +24,13 @@
///
/// info | 情報
/// note | 備考
クッキーを宣言するには、`Cookie`を使う必要があります。なぜなら、そうしないとパラメータがクエリのパラメータとして解釈されてしまうからです。
///
/// info | 情報
/// note | 備考
**ブラウザがクッキーを**特殊な方法で裏側で扱うため、**JavaScript** から簡単には触れられないことを念頭に置いてください。

6
docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md

@ -28,11 +28,11 @@
///
/// info | 情報
/// note | 備考
この例では、架空のカスタムヘッダー `X-Key``X-Token` を使用しています。
しかし実際のケースでセキュリティを実装する際は、統合された[Security utilities(次の章)](../security/index.md)を使うことで、より多くの利点を得られます。
しかし実際のケースでセキュリティを実装する際は、統合された[セキュリティユーティリティ(次の章)](../security/index.md)を使うことで、より多くの利点を得られます。
///
@ -62,7 +62,7 @@
## *path operation*のグループに対する依存関係 { #dependencies-for-a-group-of-path-operations }
後で、より大きなアプリケーションを(おそらく複数ファイルで)構造化する方法([Bigger Applications - Multiple Files](../../tutorial/bigger-applications.md))について読むときに、*path operation*のグループに対して単一の`dependencies`パラメータを宣言する方法を学びます。
後で、より大きなアプリケーションを(おそらく複数ファイルで)構造化する方法([より大きなアプリケーション - 複数ファイル](../../tutorial/bigger-applications.md))について読むときに、*path operation*のグループに対して単一の`dependencies`パラメータを宣言する方法を学びます。
## グローバル依存関係 { #global-dependencies }

2
docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md

@ -170,7 +170,7 @@ participant tasks as Background tasks
end
```
/// info | 情報
/// note | 備考
**1つのレスポンス** だけがクライアントに送信されます。それはエラーレスポンスの一つかもしれませんし、*path operation*からのレスポンスかもしれません。

4
docs/ja/docs/tutorial/dependencies/index.md

@ -51,7 +51,7 @@
そして、これらの値を含む`dict`を返します。
/// info | 情報
/// note | 備考
FastAPI はバージョン 0.95.0 で `Annotated` のサポートを追加し(そして推奨し始めました)。
@ -106,7 +106,7 @@ common_parameters --> read_users
この方法では、共有されるコードを一度書き、**FastAPI** が*path operation*のための呼び出しを行います。
/// check | 確認
/// tip | 豆知識
特別なクラスを作成してどこかで **FastAPI** に渡して「登録」する必要はないことに注意してください。

2
docs/ja/docs/tutorial/dependencies/sub-dependencies.md

@ -35,7 +35,7 @@
{* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
/// info | 情報
/// note | 備考
*path operation 関数*の中で宣言している依存関係は`query_or_cookie_extractor`の1つだけであることに注意してください。

34
docs/ja/docs/tutorial/first-steps.md

@ -180,7 +180,7 @@ entrypoint = "backend.main:app"
from backend.main import app
```
### パス付きの`fastapi dev` { #fastapi-dev-with-path }
### パス指定の`fastapi dev`または`--entrypoint` CLIオプション { #fastapi-dev-with-path-or-with-entrypoint-cli-option }
`fastapi dev`コマンドにファイルパスを渡すこともでき、使用すべきFastAPIのappオブジェクトを推測します:
@ -188,29 +188,19 @@ from backend.main import app
$ fastapi dev main.py
```
ただし、その場合は毎回`fastapi`コマンドを呼ぶたびに正しいパスを渡すことを覚えておく必要があります。
さらに、他のツール(たとえば、[VS Code 拡張機能](../editor-support.md)や[FastAPI Cloud](https://fastapicloud.com))が見つけられない場合があります。そのため、`pyproject.toml`の`entrypoint`を使うことを推奨します。
### アプリをデプロイ(任意) { #deploy-your-app-optional }
任意でFastAPIアプリを[FastAPI Cloud](https://fastapicloud.com)にデプロイできます。まだなら、待機リストに登録してください。 🚀
すでに**FastAPI Cloud**アカウントがある場合(待機リストから招待済みの場合😉)、1コマンドでアプリケーションをデプロイできます。
デプロイする前に、ログインしていることを確認してください:
<div class="termy">
または、`fastapi dev`コマンドに`--entrypoint`オプションを渡すこともできます:
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
$ fastapi dev --entrypoint main:app
```
</div>
ただし、その場合は毎回`fastapi`コマンドを呼ぶたびに正しいパスや`entrypoint`を渡すことを覚えておく必要があります。
さらに、他のツール(たとえば、[VS Code 拡張機能](../editor-support.md)や[FastAPI Cloud](https://fastapicloud.com))が見つけられない場合があります。そのため、`pyproject.toml`の`entrypoint`を使うことを推奨します。
その後、アプリをデプロイします:
### アプリをデプロイ(任意) { #deploy-your-app-optional }
任意でFastAPIアプリを[FastAPI Cloud](https://fastapicloud.com)に1コマンドでデプロイできます。 🚀
<div class="termy">
@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
</div>
CLIはFastAPIアプリケーションを自動検出してクラウドにデプロイします。ログインしていない場合、認証を完了するためにブラウザが開きます。
以上です!これで、そのURLでアプリにアクセスできます。 ✨
## ステップ毎の要約 { #recap-step-by-step }
@ -269,7 +261,7 @@ https://example.com/items/foo
/items/foo
```
/// info | 情報
/// note | 備考
「パス」は一般に「エンドポイント」または「ルート」とも呼ばれます。
@ -321,7 +313,7 @@ APIを構築するときは、通常、これらの特定のHTTPメソッドを
* パス `/`
* <dfn title="HTTP GET メソッド"><code>get</code> オペレーション</dfn>
/// info | `@decorator` 情報
/// note | `@decorator` 情報
Pythonにおける`@something`シンタックスはデコレータと呼ばれます。

2
docs/ja/docs/tutorial/metadata.md

@ -74,7 +74,7 @@ OpenAPI 3.1.0 および FastAPI 0.99.0 以降では、`license_info` を `url`
{* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
/// info | 情報
/// note | 備考
タグの詳細は [Path Operation の設定](path-operation-configuration.md#tags) を参照してください。

4
docs/ja/docs/tutorial/path-operation-configuration.md

@ -72,13 +72,13 @@ docstringに[Markdown](https://en.wikipedia.org/wiki/Markdown)を記述すれば
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
/// info | 情報
/// note | 備考
`response_description`は具体的にレスポンスを参照し、`description`は*path operation*全般を参照していることに注意してください。
///
/// check | 確認
/// tip | 豆知識
OpenAPIは*path operation*ごとにレスポンスの説明を必要としています。

4
docs/ja/docs/tutorial/path-params-numeric-validations.md

@ -8,7 +8,7 @@
{* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}
/// info | 情報
/// note | 備考
FastAPI はバージョン 0.95.0 で`Annotated`のサポートを追加し(そして推奨し始めました)。
@ -131,7 +131,7 @@ Pythonはその`*`で何かをすることはありませんが、それ以降
* `lt`: `l`ess `t`han
* `le`: `l`ess than or `e`qual
/// info | 情報
/// note | 備考
`Query`、`Path`、および後で見る他のクラスは、共通の`Param`クラスのサブクラスです。

8
docs/ja/docs/tutorial/path-params.md

@ -20,7 +20,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
ここでは、 `item_id``int` として宣言されています。
/// check | 確認
/// tip | 豆知識
これにより、関数内でのエディターサポート (エラーチェックや補完など) が提供されます。
@ -34,7 +34,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
{"item_id":3}
```
/// check | 確認
/// tip | 豆知識
関数が受け取った(および返した)値は、文字列の `"3"` ではなく、Pythonの `int` としての `3` であることに注意してください。
@ -66,7 +66,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
[http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2) で見られるように、`int` のかわりに `float` が与えられた場合にも同様なエラーが表示されます。
/// check | 確認
/// tip | 豆知識
したがって、同じPythonの型宣言を使用することで、**FastAPI**はデータのバリデーションを行います。
@ -82,7 +82,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
<img src="/img/tutorial/path-params/image01.png">
/// check | 確認
/// tip | 豆知識
繰り返しになりますが、同じPython型宣言を使用するだけで、**FastAPI**は対話的なドキュメントを自動的に生成します(Swagger UIを統合)。

34
docs/ja/docs/tutorial/query-params-str-validations.md

@ -24,12 +24,12 @@ FastAPIは、 `q` はデフォルト値が `= None` であるため、必須で
そのために、まずは以下をインポートします:
* `fastapi` から `Query`
* `typing` から `Annotated`
- `fastapi` から `Query`
- `typing` から `Annotated`
{* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *}
/// info | 情報
/// note | 備考
FastAPI はバージョン 0.95.0 で `Annotated` のサポートを追加し(推奨し始め)ました。
@ -79,9 +79,9 @@ q: Annotated[str | None] = None
FastAPI は次を行います:
* 最大長が 50 文字であることを確かめるようデータを **検証** する
* データが有効でないときに、クライアントに **明確なエラー** を表示する
* OpenAPI スキーマの *path operation* にパラメータを **ドキュメント化** する(その結果、**自動ドキュメント UI** に表示されます)
- 最大長が 50 文字であることを確かめるようデータを **検証** する
- データが有効でないときに、クライアントに **明確なエラー** を表示する
- OpenAPI スキーマの *path operation* にパラメータを **ドキュメント化** する(その結果、**自動ドキュメント UI** に表示されます)
## 代替(古い方法): デフォルト値としての `Query` { #alternative-old-query-as-the-default-value }
@ -174,9 +174,9 @@ FastAPI なしで同じ関数を **別の場所** から **呼び出しても**
この特定の正規表現パターンは受け取ったパラメータの値をチェックします:
* `^`: は、これ以降の文字で始まり、これより以前には文字はありません。
* `fixedquery`: は、正確な`fixedquery`を持っています.
* `$`: で終わる場合、`fixedquery`以降には文字はありません.
- `^`: は、これ以降の文字で始まり、これより以前には文字はありません。
- `fixedquery`: は、正確な`fixedquery`を持っています.
- `$`: で終わる場合、`fixedquery`以降には文字はありません.
もしこれらすべての **「正規表現」** のアイデアについて迷っていても、心配しないでください。多くの人にとって難しい話題です。正規表現を必要としなくても、まだ、多くのことができます。
@ -382,7 +382,7 @@ Pydantic には [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/va
{* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
/// info | 情報
/// note | 備考
これは Pydantic バージョン 2 以上で利用できます。 😎
@ -432,16 +432,16 @@ Pydantic には [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/va
一般的なバリデーションとメタデータ:
* `alias`
* `title`
* `description`
* `deprecated`
- `alias`
- `title`
- `description`
- `deprecated`
文字列に固有のバリデーション:
* `min_length`
* `max_length`
* `pattern`
- `min_length`
- `max_length`
- `pattern`
`AfterValidator` を使ったカスタムバリデーション。

2
docs/ja/docs/tutorial/query-params.md

@ -65,7 +65,7 @@ http://127.0.0.1:8000/items/?skip=20
この場合、関数パラメータ `q` はオプショナルとなり、デフォルトでは `None` になります。
/// check | 確認
/// tip | 豆知識
パスパラメータ `item_id` はパスパラメータであり、`q` はそれとは違ってクエリパラメータであると判別できるほど**FastAPI** が賢いということにも注意してください。

4
docs/ja/docs/tutorial/request-files.md

@ -2,7 +2,7 @@
`File` を使って、クライアントがアップロードするファイルを定義できます。
/// info | 情報
/// note | 備考
アップロードされたファイルを受け取るには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。
@ -28,7 +28,7 @@ $ pip install python-multipart
{* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *}
/// info | 情報
/// note | 備考
`File``Form` を直接継承したクラスです。

2
docs/ja/docs/tutorial/request-form-models.md

@ -2,7 +2,7 @@
FastAPI では、フォームフィールドを宣言するために **Pydantic モデル**を使用できます。
/// info | 情報
/// note | 備考
フォームを使うには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。

2
docs/ja/docs/tutorial/request-forms-and-files.md

@ -2,7 +2,7 @@
`File`と`Form`を同時に使うことでファイルとフォームフィールドを定義することができます。
/// info | 情報
/// note | 備考
アップロードされたファイルやフォームデータを受信するには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。

6
docs/ja/docs/tutorial/request-forms.md

@ -2,7 +2,7 @@
JSONの代わりにフィールドを受け取る場合は、`Form`を使用します。
/// info | 情報
/// note | 備考
フォームを使うためには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。
@ -32,7 +32,7 @@ $ pip install python-multipart
`Form`では`Body`(および`Query`や`Path`、`Cookie`)と同じ設定を宣言することができます。これには、バリデーション、例、エイリアス(例えば`username`の代わりに`user-name`)などが含まれます。
/// info | 情報
/// note | 備考
`Form`は`Body`を直接継承するクラスです。
@ -56,7 +56,7 @@ HTMLフォーム(`<form></form>`)がサーバにデータを送信する方
しかし、フォームがファイルを含む場合は、`multipart/form-data`としてエンコードされます。ファイルの扱いについては次の章で説明します。
これらのエンコーディングやフォームフィールドの詳細については、[<abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr>`POST` ウェブドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)を参照してください。
これらのエンコーディングやフォームフィールドの詳細については、[<abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr>`POST` ウェブドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)を参照してください。
///

4
docs/ja/docs/tutorial/response-model.md

@ -72,7 +72,7 @@ FastAPIはこの `response_model` を使って、データのドキュメント
{* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *}
/// info | 情報
/// note | 備考
`EmailStr` を使用するには、最初に [`email-validator`](https://github.com/JoshData/python-email-validator) をインストールしてください。
@ -251,7 +251,7 @@ Pydanticフィールドとして有効ではないものを返し、ツール(
}
```
/// info | 情報
/// note | 備考
以下も使用できます:

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save