Skip to content

reduhq/FastAPI_01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI - Aprendiendo FastAPI con Platzi

Contenido:

NOTA: Para ejecutar nuestra API en local, tenemos que usar el siguiente comando

uvicorn main:app --reload

Creando nuestro entorno virtual e instalando FastAPI

  1. Creando nuestro entorno virtual
python3 -m venv venv
  1. Activando nuestro entorno virtual
source venv/bin/activate
  1. Instalando FastAPI y Uvicorn
pip install fastapi uvicorn
  1. Creando un requirements.txt
pip freeze > requirements.txt
  1. Para instalar los paquetes de requirements.txt ejecutar este comando
pip install -r requirements.txt

Tipos de datos especiales en FastAPI

  • Enum
  • HttpUrl
  • FilePath
  • DirectoryPath
  • EmailStr pip install pydantic[email]
  • PaymentCardNumber
  • IpvAnyAdress
  • NegativeFloat
  • PositiveFloat
  • NegativeInt
  • PositiveInt

Puedes encontrar mas tipos de datos en Pydantic Field Types

Entradas de datos en FastAPI

Tipos de entrada de datos Descripción
Path Parameters Son esos parametros obligatorios que se mandan mediante la url
Query Parameters Son los parametros opcionales que pasamos mediante la url
Request Body Son los archivos en formato JSON que nos envia un cliente a nuestra API
Formularios Son aquellos campos que tenemos en los formularios del frontend de una aplicacion que nos trae esos datos (mediante este metodo) a nuestra API
Headers Son cabeceras HTTP que pueden venir de cliente a servidor y viceversa
Cookies Son pequeños bloques de codigo y/o de datos que un servidor instala en nuestra computadora para poder trackear nuestra informacion a través de la web
Files Es la entrada de datos que se refiere a los archivos dentro de FastAPI (Imagenes, Videos, etc), este tipo de entrada depende de dos clases (File y UploadFile)

Path Parameters

# 127.0.0.1:8000/person/detail/25
@app.get("/person/detail/{person_id}")
def show_person(person_id:int = Path(...)): 
    return {person_id: "it exists!"}

Query Parameters

# 127.0.0.1:8000/person/detail?name=John&age=12
@app.get("/person/detail")
def show_person(
    name:Optional[str] = Query(None), #opcional
    age:int = Query(...) #obligatorio
):
    return {name:age}

Request Body

# 127.0.0.1:8000/person/25
@app.put("/person/{person_id}")
def update_person(
    person_id:int = Path(...),
    person:Person = Body(...),
    Location:Location = Body(...)
):
    results = person.dict()
    results.update(Location.dict())
    return results

Formularios

Para trabajar con formularios se tiene que descargar el siguiente paquete:

pip install python-multipart
# Ejemplo usando la entrada de dato tipo Formulario
@app.post(
    path="/login",
    response_model=LoginOut,
    status_code=status.HTTP_200_OK
)
def login(username:str = Form(...), password:str = Form(...)):
    return LoginOut(username=username)

Headers y Cookies

# Trabajando con Cookies y Headers Parameters
@app.post(
    path="/contact",
    status_code=status.HTTP_200_OK
)
def contact(
    first_name:str = Form(...),
    last_name:str = Form(...),
    email:EmailStr = Form(...),
    message:str = Form(...),
    user_agent:Optional[str] = Header(default=None),
    ads:Optional[str] = Cookie(default=None)
):
    return user_agent

Files

@app.post("/post-image")
def post_image(image:UploadFile = File(...)):
    return {
        "Filename": image.filename,
        "Format": image.content_type,
        "Size(kb)": round(len(image.file.read())/1024, ndigits=2),
    }

About

Aprendiendo FastAPI con Platzi

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages