Primeros Pasos¶
🌐 Traducción por IA y humanos
Esta traducción fue hecha por IA guiada por humanos. 🤝
Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖
Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.
El archivo FastAPI más simple podría verse así:
fromfastapiimportFastAPIapp=FastAPI()@app.get("/")asyncdefroot():return{"message":"Hello World"}Copia eso en un archivomain.py.
Ejecuta el servidor en vivo:
$<fontcolor="#4E9A06">fastapi</font>dev<ustyle="text-decoration-style:solid">main.py</u> <span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀 Searching for package file structure from directories with <font color="#3465A4">__init__.py</font> files Importing from <font color="#75507B">/home/user/code/</font><font color="#AD7FA8">awesomeapp</font> <span style="background-color:#007166"><font color="#D3D7CF"> module </font></span> 🐍 main.py <span style="background-color:#007166"><font color="#D3D7CF"> code </font></span> Importing the FastAPI app object from the module with the following code: <u style="text-decoration-style:solid">from </u><u style="text-decoration-style:solid"><b>main</b></u><u style="text-decoration-style:solid"> import </u><u style="text-decoration-style:solid"><b>app</b></u> <span style="background-color:#007166"><font color="#D3D7CF"> app </font></span> Using import string: <font color="#3465A4">main:app</font> <span style="background-color:#007166"><font color="#D3D7CF"> server </font></span> Server started at <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000</u></font> <span style="background-color:#007166"><font color="#D3D7CF"> server </font></span> Documentation at <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000/docs</u></font> <span style="background-color:#007166"><font color="#D3D7CF"> tip </font></span> Running in development mode, for production use: <b>fastapi run</b> Logs: <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Will watch for changes in these directories: <b>[</b><font color="#4E9A06">'/home/user/code/awesomeapp'</font><b>]</b> <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Uvicorn running on <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000</u></font> <b>(</b>Press CTRL+C to quit<b>)</b> <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Started reloader process <b>[</b><font color="#34E2E2"><b>383138</b></font><b>]</b> using WatchFiles <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Started server process <b>[</b><font color="#34E2E2"><b>383153</b></font><b>]</b> <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Waiting for application startup. <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span> Application startup complete.En el resultado, hay una línea con algo como:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)Esa línea muestra la URL donde tu aplicación está siendo servida, en tu máquina local.
Revisa¶
Abre tu navegador enhttp://127.0.0.1:8000.
Verás el response JSON como:
{"message":"Hello World"}Documentación interactiva de la API¶
Ahora ve ahttp://127.0.0.1:8000/docs.
Verás la documentación interactiva automática de la API (proporcionada porSwagger UI):

Documentación alternativa de la API¶
Y ahora, ve ahttp://127.0.0.1:8000/redoc.
Verás la documentación alternativa automática (proporcionada porReDoc):

OpenAPI¶
FastAPI genera un "esquema" con toda tu API utilizando el estándarOpenAPI para definir APIs.
"Esquema"¶
Un "esquema" es una definición o descripción de algo. No el código que lo implementa, sino solo una descripción abstracta.
Esquema de la API¶
En este caso,OpenAPI es una especificación que dicta cómo definir un esquema de tu API.
Esta definición de esquema incluye los paths de tu API, los posibles parámetros que toman, etc.
Esquema de Datos¶
El término "esquema" también podría referirse a la forma de algunos datos, como el contenido JSON.
En ese caso, significaría los atributos del JSON, los tipos de datos que tienen, etc.
OpenAPI y JSON Schema¶
OpenAPI define un esquema de API para tu API. Y ese esquema incluye definiciones (o "esquemas") de los datos enviados y recibidos por tu API utilizandoJSON Schema, el estándar para esquemas de datos JSON.
Revisa elopenapi.json¶
Si tienes curiosidad por cómo se ve el esquema OpenAPI en bruto, FastAPI automáticamente genera un JSON (esquema) con las descripciones de toda tu API.
Puedes verlo directamente en:http://127.0.0.1:8000/openapi.json.
Mostrará un JSON que empieza con algo como:
{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/items/":{"get":{"responses":{"200":{"description":"Successful Response","content":{"application/json":{...Para qué sirve OpenAPI¶
El esquema OpenAPI es lo que impulsa los dos sistemas de documentación interactiva incluidos.
Y hay docenas de alternativas, todas basadas en OpenAPI. Podrías añadir fácilmente cualquiera de esas alternativas a tu aplicación construida conFastAPI.
También podrías usarlo para generar código automáticamente, para clientes que se comuniquen con tu API. Por ejemplo, aplicaciones frontend, móviles o IoT.
Despliega tu app (opcional)¶
Opcionalmente puedes desplegar tu app de FastAPI enFastAPI Cloud, ve y únete a la lista de espera si aún no lo has hecho. 🚀
Si ya tienes una cuenta deFastAPI 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:
$fastapiloginYou are logged in to FastAPI Cloud 🚀Luego despliega tu app:
$fastapideployDeploying to FastAPI Cloud...✅ Deployment successful!🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev¡Eso es todo! Ahora puedes acceder a tu app en esa URL. ✨
Recapitulación, paso a paso¶
Paso 1: importaFastAPI¶
fromfastapiimportFastAPIapp=FastAPI()@app.get("/")asyncdefroot():return{"message":"Hello World"}FastAPI es una clase de Python que proporciona toda la funcionalidad para tu API.
Detalles técnicos
FastAPI es una clase que hereda directamente deStarlette.
Puedes usar toda la funcionalidad deStarlette conFastAPI también.
Paso 2: crea una "instance" deFastAPI¶
fromfastapiimportFastAPIapp=FastAPI()@app.get("/")asyncdefroot():return{"message":"Hello World"}Aquí la variableapp será una "instance" de la claseFastAPI.
Este será el punto principal de interacción para crear toda tu API.
Paso 3: crea unapath operation¶
Path¶
"Path" aquí se refiere a la última parte de la URL empezando desde la primera/.
Así que, en una URL como:
https://example.com/items/foo...el path sería:
/items/fooInformación
Un "path" también es comúnmente llamado "endpoint" o "ruta".
Mientras construyes una API, el "path" es la forma principal de separar "concerns" y "resources".
Operación¶
"Operación" aquí se refiere a uno de los "métodos" HTTP.
Uno de:
POSTGETPUTDELETE
...y los más exóticos:
OPTIONSHEADPATCHTRACE
En el protocolo HTTP, puedes comunicarte con cada path usando uno (o más) de estos "métodos".
Al construir APIs, normalmente usas estos métodos HTTP específicos para realizar una acción específica.
Normalmente usas:
POST: para crear datos.GET: para leer datos.PUT: para actualizar datos.DELETE: para eliminar datos.
Así que, en OpenAPI, cada uno de los métodos HTTP se llama una "operation".
Vamos a llamarlas "operaciones" también.
Define unpath operation decorator¶
fromfastapiimportFastAPIapp=FastAPI()@app.get("/")asyncdefroot():return{"message":"Hello World"}El@app.get("/") le dice aFastAPI que la función justo debajo se encarga de manejar requests que vayan a:
- el path
/ - usando una
getoperación
Información sobre@decorator
Esa sintaxis@algo en Python se llama un "decorador".
Lo pones encima de una función. Como un bonito sombrero decorativo (supongo que de ahí viene el término).
Un "decorador" toma la función de abajo y hace algo con ella.
En nuestro caso, este decorador le dice aFastAPI que la función de abajo corresponde alpath/ con unaoperationget.
Es el "path operation decorator".
También puedes usar las otras operaciones:
@app.post()@app.put()@app.delete()
Y los más exóticos:
@app.options()@app.head()@app.patch()@app.trace()
Consejo
Eres libre de usar cada operación (método HTTP) como quieras.
FastAPI no fuerza ningún significado específico.
La información aquí se presenta como una guía, no un requisito.
Por ejemplo, cuando usas GraphQL normalmente realizas todas las acciones usando solo operacionesPOST.
Paso 4: define lapath operation function¶
Esta es nuestra "path operation function":
- path: es
/. - operation: es
get. - function: es la función debajo del "decorador" (debajo de
@app.get("/")).
fromfastapiimportFastAPIapp=FastAPI()@app.get("/")asyncdefroot():return{"message":"Hello World"}Esta es una función de Python.
Será llamada porFastAPI cuando reciba un request en la URL "/" usando una operaciónGET.
En este caso, es una funciónasync.
También podrías definirla como una función normal en lugar deasync def:
fromfastapiimportFastAPIapp=FastAPI()@app.get("/")defroot():return{"message":"Hello World"}Nota
Si no sabes la diferencia, Revisa la secciónAsync:"¿Tienes prisa?".
Paso 5: retorna el contenido¶
fromfastapiimportFastAPIapp=FastAPI()@app.get("/")asyncdefroot():return{"message":"Hello World"}Puedes retornar undict,list, valores singulares comostr,int, etc.
También puedes retornar modelos de Pydantic (verás más sobre eso más adelante).
Hay muchos otros objetos y modelos que serán automáticamente convertidos a JSON (incluyendo ORMs, etc). Intenta usar tus favoritos, es altamente probable que ya sean compatibles.
Paso 6: Despliégalo¶
Despliega tu app enFastAPI Cloud con un solo comando:fastapi deploy. 🎉
Sobre FastAPI Cloud¶
FastAPI Cloud está construido por el mismo autor y equipo detrás deFastAPI.
Agiliza el proceso deconstruir,desplegar yacceder a una API con el mínimo esfuerzo.
Trae la mismaexperiencia de desarrollador de construir apps con FastAPI adesplegarlas en la nube. 🎉
FastAPI Cloud es el sponsor principal y proveedor de financiación para los proyectos open source deFastAPI and friends. ✨
Despliega en otros proveedores cloud¶
FastAPI es open source y basado en estándares. Puedes desplegar apps de FastAPI en cualquier proveedor cloud que elijas.
Sigue las guías de tu proveedor cloud para desplegar apps de FastAPI con ellos. 🤓
Recapitulación¶
- Importa
FastAPI. - Crea una instance
app. - Escribe unpath operation decorator usando decoradores como
@app.get("/"). - Define unapath operation function; por ejemplo,
def root(): .... - Ejecuta el servidor de desarrollo usando el comando
fastapi dev. - Opcionalmente, despliega tu app con
fastapi deploy.







