Saltar a contenido

Rest API

Para la API se utiliza FastAPI, un framework web que permite crear una APIs auto documentadas1 y documentadas automaticamente2. La estructura es similar a otros frameworks web como Express:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def say_hello(name: str = "World") -> str:
    return f"Hello {name}"

# uvicorn module:app --port 8080
const express = require('express');

const app = express();

app.get('/', function(req, res){
    res.send(`Hello ${req.params.name || 'World'}!`)
});

// app.listen(8080);

Referencia Rápida

Auto documentación

Cada endpoint es documentado automaticamente en el formato OpenAPI. Se puede ver la documentación y probar cada endpoint tanto en la interfaz de Swagger UI en /docs y en la interfaz de ReDoc en /redoc, en el servidor.

El nombre del endpoint es obtenido del nombre del nombre de la función, su descripción de su docstring, los parámetros de los atributos con las anotaciones de tipos, la categoria con el parámetro, el formato de respuesta y su status code con los parámetro tags, response_model y status_code respectivamente.

Dependencias

Las dependencias en FastAPI son procesos que ocurren ocurren generalmente antes del proceso principal de la ruta. Estos pueden ser usados para evitar repetir codigo en cada ruta. Un caso común es con sesiones en la base de datos:

def get_db():
    db = Session(engine)
    try:
        yield db
    finally:
        db.commit()
        db.close()


@app.get("/users/:user_id")
def user_by_id(user_id: int, db: Session = Depends(get_db)):
    return db.exec(select(User).where(User.id == user_id)).one()

  1. Que el código se entiende por si solo 

  2. Que el código genera documentación automaticamente 


Última actualización: 12 de julio de 2022