Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

971
Vistas
¿Cuáles son las mejores prácticas para estructurar un proyecto FastAPI?

Los problemas que quiero resolver:

  • Buenos nombres de directorios para que quede claro su propósito.
  • Mantener todos los archivos del proyecto (incluido virtualenv) en un solo lugar, para que pueda copiar, mover, archivar, eliminar todo el proyecto o estimar el uso del espacio en disco fácilmente.
  • Crear varias copias de algunos conjuntos de archivos seleccionados, como la aplicación completa, el repositorio o virtualenv, mientras mantengo una sola copia de otros archivos que no quiero clonar.
  • Implementar el conjunto correcto de archivos en el servidor simplemente sincronizando un directorio seleccionado.
  • manejando tanto el frontend como el backend muy bien.
over 4 years ago · Hanz Gallego
1 Respuestas
Responde la pregunta

0

Harsha ya mencionó mi generador de proyectos, pero creo que puede ser útil para futuros lectores explicar las ideas detrás de él.

Si va a servir su interfaz, algo como yarn o npm . No debes preocuparte por la estructura entre ellos. Con algo como axios o la búsqueda de Javascript, puede hablar fácilmente con su backend desde cualquier lugar.

Cuando se trata de estructurar el backend, si desea renderizar plantillas con Jinja, puede tener algo parecido a MVC Pattern.

 your_project ├── __init__.py ├── main.py ├── core │ ├── models │ │ ├── database.py │ │ └── __init__.py │ ├── schemas │ │ ├── __init__.py │ │ └── schema.py │ └── settings.py ├── tests │ ├── __init__.py │ └── v1 │ ├── __init__.py │ └── test_v1.py └── v1 ├── api.py ├── endpoints │ ├── endpoint.py │ └── __init__.py └── __init__.py

Al usar __init__ en todas partes, podemos acceder a las variables desde toda la aplicación, al igual que Django.

Vamos a dividir las carpetas en partes:

  • Centro
    • modelos
      • base de datos.py
    • esquemas
      • usuarios.py
      • algo.py
    • configuración.py
    • vistas (agregue esto si va a renderizar plantillas)
      • v1_vistas.py
      • v2_views.py
  • pruebas
  • v1
  • v2

Modelos

Es para sus modelos de base de datos, al hacer esto puede importar la misma sesión de base de datos u objeto de v1 y v2.

esquemas

Los esquemas son sus modelos de Pydantic, los llamamos esquemas porque en realidad se usan para crear esquemas de OpenAPI, ya que FastAPI se basa en la especificación de OpenAPI. Usamos esquemas en todas partes, desde la generación de Swagger hasta el cuerpo de solicitud esperado del punto final.

configuración.py

Es para la gestión de configuraciones de Pydantic, que es extremadamente útil, puede usar las mismas variables sin volver a declararlas, para ver cómo podría ser útil para usted, consulte nuestra documentación para configuraciones y variables de entorno.

Puntos de vista

Esto es opcional si va a renderizar su interfaz con Jinja, puede tener algo parecido al patrón MVC

  • Centro
    • puntos de vista
      • v1_vistas.py
      • v2_views.py

Se vería algo como esto si desea agregar vistas.

Pruebas

Es bueno tener sus pruebas dentro de su carpeta de back-end.

API

Créelos de forma independiente mediante APIRouter, en lugar de reunir todas sus API en un solo archivo.

notas

Puede usar la importación absoluta para todas sus importaciones ya que estamos usando __init__ en todas partes, consulte los documentos de empaquetado de Python .

Así que suponga que está tratando de importar endpoint.py de v1 desde v2 , simplemente puede hacer

 from my_project.v1.endpoints.endpoint import something
over 4 years ago · Hanz Gallego Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda