Code Monkey home page Code Monkey logo

fastapi-rest-api-tutorial's Introduction

FastAPI REST API Tutorial

Este repositorio es un ejemplo de una API RESTful implementada con FastAPI. Incluye conceptos como DDD, Vertical Slices, Inyección de Dependencias, Seguridad, Swagger y más.

Tutoriales en Video

Video 1: Introducción y Configuración Inicial

En este vídeo tratamos la versión inicial, básica pero funcional, aunque claro, no hay seguridad ni ninguna de las técnicas que se han desarrollado a posteriori.

Vídeo 2:

TODO: grabar y publicar el vídeo.

Características

  • FastAPI: Framework web moderno y de alto rendimiento para construir APIs con Python 3.7+ basado en estándares como OpenAPI y JSON Schema.
  • RESTful API: Diseño de la API siguiendo los principios REST.
  • Domain-Driven Design (DDD): Separación clara de las responsabilidades y lógica del dominio.
  • Vertical Slices: Organización del código por características en lugar de por capas técnicas.
  • Inyección de Dependencias: Gestión e inyección de dependencias con FastAPI.
  • Seguridad: Implementación de autenticación y autorización.
  • Swagger: Documentación interactiva de la API.

Estructura del Proyecto

qna_api/
│
├── auth/
│   ├── models.py
│   ├── routes.py
│   └── service.py
│
├── core/
│   ├── base_repository.py
│   ├── config.py
│   ├── constants.py
│   ├── database.py
│   └── logging.py
│
├── domain/
│   ├── answer.py
│   ├── question.py
│   └── user.py
│
├── questions/
│   ├── models.py
│   ├── repositories.py
│   ├── routes.py
│   └── services.py
│
└── user/
    ├── controller.py
    ├── models.py
    ├── repository.py
    └── service.py

Instalación

  1. Clona el repositorio:

    git clone https://github.com/jgcarmona-com/fastapi-rest-api-tutorial.git
  2. Navega al directorio del proyecto:

    cd fastapi-rest-api-tutorial
  3. Crea un entorno virtual y activa:

    python -m venv .venv
    source venv/bin/activate  # En Windows usa `venv\Scripts\activate`
  4. Instala las dependencias:

    pip install -r requirements.txt
  5. Configura las variables de entorno: Antes de iniciar la aplicación, necesitas configurar las variables de entorno. Sigue estos pasos:

    1. Copia el archivo .env.example a .env:
    cp .env.example .env
    1. Rellena las variables de entorno en el archivo .env con tus propios valores:
    SECRET_KEY=your_secret_key
    ALGORITHM=HS256
    ACCESS_TOKEN_EXPIRE_MINUTES=30
    DATABASE_URL=sqlite:///./sql_app.db
    INITIAL_ADMIN_USERNAME=admin
    [email protected]
    INITIAL_ADMIN_PASSWORD=admin
    
  6. Inicia la aplicación: Desde vscode selecciona la opción local o docker y ejecútalo.

Uso

  1. Visita http://127.0.0.1:8000 y te redirigirá a /doc para ver la documentación interactiva de la API (swagger).
  2. Visita http://127.0.0.1:8000/redoc para ver la documentación alternativa de la API.

Enlaces útiles

Versiones anteriores

fastapi-rest-api-tutorial's People

Contributors

jgcarmona-com avatar

Stargazers

Leandro Rivera avatar Ezequiel Leonardo Castaño avatar Juan Pablo avatar Konstantin Shilovskiy avatar  avatar

Watchers

 avatar

Forkers

riverajefer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.