Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Hello World: elaborando el código de nuestra primer API

5/20
Recursos

Aportes 37

Preguntas 10

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Ya al código maldita sea!

![](

¿Problemas ejecutando desde tu entorno virtual en Ubuntu?
Si no te aparece que estés usando el intérprete de tu entorno virtual (‘venv’:venv), has clic aquí:

Luego, selecciona el intérprete para tu entorno virtual (usualmente en ./venv/bin/python), usualmente dice 'Recommended’

Y verás que, ahora si, estás usando el intérprete de tu entorno virtual y dice ‘venv’:venv

Listo para programar como los mejores 🦾

Utilizando el tipado estático:

#  Dependencias.
from typing import Dict
from fastapi import FastAPI;

#  Instancia de la clase.
mi_app:FastAPI = FastAPI();

#  Path Operator Decoration.
@mi_app.get("/")
def home() -> Dict:
   #  Return JSON.
   return {"Hello": "World"};

Ejecuté code . desde la terminal y nunca e apareció lo del entorno virtual…

Notas de la clase de python 🐍


  1. Lo primero es importar el FastAPI, es una clase que viene del módulo fastapi. Es esta clase la que permite que todo el framework funcione
from fastapi import FastAPI
  1. se crea una variable llamada app. esta variable va a contener toda la aplicación y para poder iniciarlizarla bien se le coloca una instancia de FastAPI -> le colocamos los paréntesis

app = FastAPI()

Path operation

Esto es un path operation decoration

@app.get("/")

Este decorador usa el método get, que viene del objeto app, que proviene de la instancia FastAPI

Un api transmite información entre disferentes partes del softwar mediante el formato interlenguaje JSON

Nota: Un JSON en python es un diccionario

Comando para iniciar la aplicación:

uvicorn main:app --reload

Sí no aparece el virtualenv en code, puedes borrar el venv y crearlo desde la terminal de code, una vez hecho code preguntará si deseas usarlo y, listos!☺️

Asi como dato, acabo de descubrir que al usar wsl hay que volver a ir a extensiones e instalar de nuevo la extensión de python pero esta vez va a decir “Install in WSL” y de esta forma si va a funcionar el autocompletado con el TAB

Hay que aclarar que el parámetro –reload se especifica con el fin de que cada ves que ocurra un cambio dentro del código el servidor se reinicia automático.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
uvicorn main:app --reload

INFO:     Uvicorn running on https://localhost:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

por si alguno le sirve hice un script para ejecutar antes de empezar cada vez para que se haga automatico. Y otro txt para ir guardando lo que necesitamos instalar

requirements.txt

fastapi uvicorn

antes sh

#!/bin/bash
pip install -r requirements.txt

uvicorn main:app --reload

💡 Un JSON más presentable:
Pueden descargar la extensión JSON viewer para cada que abran un JSON este se vea más entendible y presentable en su navegador, de esta manera:

.
Pueden descargar la extensión dando click aquí

Si lo estan corriendo en remoto , como yo desde un raspberry pi por ssh, el comando seria :

uvicorn --host 0.0.0.0  main:app --reload

Asi lo puden ver desde su compu.

Sencillo pero fascinante.
Les comparto el código que generé (que en teoría es el mismo que tenemos la gran mayoría) con las notas de la clase.

Saludos!

'''
uvicorn main:app --reload

Esta es la instruccion que se ejecuta dentro de la ventana de la terminal y se entiende como sigue:
    Se usa uvicorn para iniciar el servidor (uvicorn)
    Se usa el nombre de la aplicacion que se encuentra en la carpeta main (main)
    Se usa el nombre de la variable que contiene la aplicacion (app)
    Se agrega un modificador --reload para que se ejecute el servidor cada vez que se modifique algun archivo

Y esto es lo que retorna el comando:
INFO:     Will watch for changes in these directories: ['Z:\\scripts\\MaterialCursosPlatzi\\CursoFastAPI\\fast-api-hello-world']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [20532] using statreload
INFO:     Started server process [24272]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

'''
#Se importa el modulo FastAPi de la libreria fastapi
from fastapi import FastAPI

#Se crea una instancia de la clase FastAPI
app = FastAPI()

#Se crea un path operation decorator usando la funcion get
#En el home de la aplicacion se ejecutara nuestra funcion

@app.get("/")
def home():
    return {"message": "Hello World"}

Empezamos bien 😃

Fue un LABURO pero salio gracias al grupo de Telegram. En caso de que no salga nada mi consejo es que eliminen todo y desde la terminal vayan a:

cd ~

Y desde ahí crean la carpeta, el entrono virtual, descargan las librerías y abren el VS Code con:

code .

Simple hello world y con un endpoint de una API lista en 7 lineas de código, es magia jeje.

El código con tipado estático:

from fastapi import FastAPI
from typing import Dict, TypeVar, Generic

T = TypeVar('T')

## Objeto de FastAPI
app: Generic[T] = FastAPI()

# Decorador del home
@app.get("/")
def home() -> Dict[str, str]:
    return {'Hello':'World'}

Gracias !!! Creé mi primera API

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"Hello": "World"}

para que te aparezca el entorno virtual y el SO donde estas trabajando deben instalar la extension “Remote - WSL” de Microsoft y iniciar vscode desde wsl con el comando “code .”

Super buen tip abrir desde WSL el Visual Studio Code a traves de code . para que funcione mejor el entorno virtual.

  • Tambien conociendo Path operation con un decorador Path oara ejecutar funcion
@app.get("/")
def home():
    return {#Hello": "World"}

Que significa este error
TypeError: FastAPI.get() missing 1 required positional argument: 'path’
y como lo puedo solucionar??

Me encantó esta clase, porque aunque el código fue de solo 5 líneas, Facundo se tomó su tiempo para explicarlas a detalle. Super entendible.

Muy interesante esta clase, utiliza conceptos de todos los cursos anteriores de Python, Excelente!!

El sonido del teclado del profe facundo en el minuto 4:08, no se si esa tecla le funciona después de ese momento. 🙈 🙈 🙈

cengo por el challenge y vaya! hasta ahora todo claro! no me decidía entre este curso y el de anaconda aunque igual tomaré los 2 empezando por éste, a ver si lo termino esta semana.

Que buen comienzo para aprender sobre Api

Mi cara al descubrir que cree mi primera API

#main.py
# clase FastAPI from module fastapi
from fastapi import FastAPI

#variable instace of FastAPI
app = FastAPI()

#Path Operation Decorator
@app.get("/")
def home(): 
    return {"Hello": "World"}

Comando

uvicorn main:app --reload

aprendiendo algo nuevo

cargo un servidor WEB

Maravilloso, por fin llegue para aprender todo sobre FastAPI !

Se aprende mucho aunque claramente hay que tener los conceptos de la trilogía de Python:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"First API": "Congratulations"}

Buenas estimados, alguien me puede ayudar para tener ese entorno del profe, es decir lo de la terminal y Ubuntu?

Para quienes tienen problemas con que visual studio code no detecta wsl, descarguen esta extensión Aqui con esto ya lo detectara y funcionara correctamente.

When we go to applied the quey parameter we have than make the follow in the code:

...
@app.post("/person")
def create_person():
	pass

We make some lines of code with info about fast api

main_py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
	return {"run world": "Hello World"}

after we can run the following command:

uvicorn main:app --reload

Estoy impactado! Realmente FastAPI es como magia. Comparando lo que es necesario hacer en Node a lo que acabamos de hacer esta clase, es evidente.