Skip to content

raullopez32/python-fastapi-mvp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI MVP Project

Este es un proyecto mínimo hecho con FastAPI que expone un CRUD sencillo para manejar items.
Incluye validación con Pydantic v2, documentación automática de la API, pruebas con pytest, y configuración para correr en Docker / Docker Compose.


Correr localmente (Python 3.12 recomendado)

  1. Clonar el repositorio e instalar dependencias:
git clone <repo-url>
cd python-fastapi-mvp

python -m venv .venv
.\.venv\Scripts\activate

pip install -r requirements.txt
  1. Iniciar la API:
uvicorn app.main:app --reload
  1. Revisar la documentación interactiva:

Correr con Docker

Necesitas tener Docker Desktop en ejecución.

  1. Construir la imagen:
docker compose build
  1. Levantar los contenedores:
docker compose up

La API queda disponible en:

  1. Apagar los contenedores:
docker compose down
  1. Ejecutar pruebas dentro del contenedor:
docker compose run --rm fastapi pytest -q

Endpoints de ejemplo

Healthcheck

  • GET /health
{ "status": "ok" }

Listar items

  • GET /items/
[]

Crear un item

  • POST /items/
{
  "name": "Laptop",
  "price": 1200
}

Respuesta:

{
  "id": "a4d7f0e6-4e5a-4cb2-9f54-1a98c1c0a452",
  "name": "Laptop",
  "price": 1200
}

Obtener item por ID

  • GET /items/{id}
    Ejemplo: /items/a4d7f0e6-4e5a-4cb2-9f54-1a98c1c0a452

Borrar item

  • DELETE /items/{id}
    Respuesta:
204 No Content

Puedes probar los endpoints desde Swagger UI, Postman o con curl:

curl -X POST http://localhost:8000/items/ -H "Content-Type: application/json" -d '{"name":"Laptop","price":1200}'

Ejecutar pruebas

Correr los tests en local:

pytest -q

Resultado esperado:

.
1 passed in 0.50s

También puedes correrlos dentro del contenedor:

docker compose run --rm fastapi pytest -q

Notas

  • Actualmente los datos se almacenan en PostgreSQL cuando corres con Docker, o en SQLite local si no defines una base externa.
  • El proyecto está configurado en Python 3.12.

Stack utilizado

  • FastAPI
  • Pydantic v2
  • Uvicorn
  • SQLAlchemy + PostgreSQL
  • Pytest
  • Docker / Docker Compose

About

api generada con fastapi para poder controlar datos en postgress dockerizado

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published