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

550
Vistas
Flask: ¿cómo automatizar la documentación de OpenAPI v3?

Necesito documentar una API escrita en Flask 2 puro y estoy buscando un enfoque consolidado para hacerlo. Encontré diferentes soluciones viables, pero como soy nuevo en Python y Flask, no puedo elegir entre ellas. Las soluciones que encontré son:

  • https://github.com/marshmallow-code/apispec
  • https://github.com/jmcarp/flask-apispec
  • https://github.com/marshmallow-code/flask-smorest

Para separar los diferentes puntos finales de la API, utilizo el modelo Flask. La estructura de un MWE es la siguiente:

Estructura del proyecto

Primero definí dos objetos de dominio simples, Autor y Libro .

 # author.py class Author: def __init__(self, id: str, name: str): self.id = id self.name = name # book.py class Book: def __init__(self, id: str, name: str): self.id = id self.name = name

Luego, creé un punto final GET simple para ambos usando dos planos separados.

 # author_apy.py import json from flask import Blueprint, Response from domain.author import Author author = Blueprint("author", __name__, url_prefix="/authors") @author.get("/") def authors(): authors: list[Author] = [] for i in range(10): author: Author = Author(str(i), "Author " + str(i)) authors.append(author) authors_dicts = [author.__dict__ for author in authors] return Response(json.dumps(authors_dicts), mimetype="application/json")

y

 # book_api.json import json from flask import Blueprint, Response from domain.book import Book book = Blueprint("book", __name__, url_prefix="/books") @book.get("/") def books(): books: list[Book] = [] for i in range(10): book: Book = Book(str(i), "Book " + str(i)) books.append(book) books_dicts = [book.__dict__ for book in books] return Response(json.dumps(books_dicts), mimetype="application/json")

Al final, simplemente registré ambos planos en la aplicación Flask.

 # app.py from flask import Flask from api.author.author_api import author from api.book.book_api import book app = Flask(__name__) app.register_blueprint(author, url_prefix="/authors") app.register_blueprint(book, url_prefix="/books") @app.get('/') def hello_world(): return 'Flask - OpenAPI' if __name__ == '__main__': app.run()

El código fuente completo también está disponible en GitHub .

Teniendo en cuenta este ejemplo de trabajo mínimo, me gustaría saber cuál es la forma más rápida de automatizar la generación de un archivo OpenAPI v3 yaml/JSON, por ejemplo, expuesto en un punto final /api-doc.yaml.

PD: esta es mi primera API usando Python y Flask. Estoy tratando de reproducir lo que puedo hacer con Spring-Boot y SpringDoc

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo animo a cambiar su proyecto a FastAPI, no es muy diferente o más difícil que Flask.

Documentos de FastAPI sobre la generación de esquemas de OpenAPI

No solo le permitirá generar documentos/especificaciones de OpenAPI fácilmente. Además es asíncrono, mucho más rápido y moderno.

Consulte también Alternativas, inspiración y comparaciones de FastAPI para leer sobre las diferencias.

Especialmente esta cita del enlace anterior debería explicar por qué hacer lo que intenta hacer puede no ser la mejor idea:

Marcos Flask REST

Hay varios marcos Flask REST, pero después de invertir tiempo y trabajo en investigarlos, descubrí que muchos están descontinuados o abandonados, con varios problemas permanentes que los hicieron inadecuados.

over 4 years ago · Santiago Trujillo 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