¿Está trabajando en la creación de una aplicación que utilice sus propias API? La interfaz de programa de aplicación (API) es la columna vertebral de la mayoría de las aplicaciones web y se utiliza popularmente para crear una aplicación sólida. Cuando se trata de desarrollar API basadas en aprendizaje automático, la opción de facto para la mayoría de los desarrolladores es utilizar Flask, un marco de Python que le permite crear su sitio web con unas pocas líneas de código. Sin embargo, otro marco, FastAPI, está ganando impulso entre los desarrolladores en estos días y en este artículo compararemos en qué se diferencia FastAPI de Flask y cómo se puede crear una API simple con FastAPI. FastAPI vs Flask Para empezar, Flask es un marco mínimo de Python y los desarrolladores lo utilizan para alojar API (y también crear aplicaciones). Flask era «suficientemente bueno» porque era popular, minimalista y estaba escrito en Python. Un ejemplo simple de una aplicación de matraz a continuación: from flask import Flask, jsonify app = Flask(__name__) @app.route(«/», métodos=[‘GET’])def home(nombre):return jsonify({«message»: f»Hello {name}»}) if __name__ == «__main__»:app.run(debug=True) El problema con Flask es que puedes pasar cualquier valor ya que no hay validación de datos. Especialmente en un escenario de ML, esto puede romper su código. Algunos de los otros problemas incluyen naturaleza lenta, soporte para asíncrono y sockets web. Tampoco existe un sistema automatizado de generación de documentos (Swagger) y deberá diseñar manualmente la interfaz de usuario para los documentos. En Flask, para lograr asíncrono puedes usar subprocesos (concurrencia) o multiprocesamiento (paralelismo) o usar herramientas como Celery o RQ. De manera similar, para la autenticación, necesitará extensiones de terceros. FastAPI es una forma moderna de crear API de nivel de producción. Construido sobre el servidor ASGI (Asynchronous Server Gateway Interface), le permite separar su código del resto de la aplicación y así aumentar la capacidad de mantenimiento. FastAPI utiliza Pydantic para la validación de datos y Starlette como herramientas, lo que lo hace más rápido en comparación con Flask. Una de las mejores características de FastAPI es la generación automática de documentos (a través de JSON Schema y OpenAPI). Esto significa que puede generar automáticamente sus documentos y su desarrollador puede centrarse en el código y la lógica. Documentos que se presentarán en Swagger UI y ReDocs. FastAPI admite de forma nativa una serie de herramientas de seguridad y autenticación a través del paquete fastapi.security. FastAPI también implementa OAuth2 y OpenID Connect a través de los estándares OpenAPI y es compatible de forma nativa con CORS. Primeros pasos Para instalar FastAPI necesitará Python 3.6+ pip install fastapi A diferencia de Flask, FastAPI no tiene un servidor de desarrollo incorporado, por lo que se requiere un servidor ASGI como Uvicorn, Daphne o Hypercorn para la producción. instalar pip uvicorn[standard]

Ahora, puede crear un archivo main.py app = Flask(__name__)@app.route(«/», métodos=[‘GET’])def home(name):return jsonify({«message»: f»Hello {name}»})if __name__ == «__main__»:app.run(debug=True) Con Pydantic junto con sugerencias de tipo, obtienes un Buena experiencia de edición con autocompletado. Pydantic es una biblioteca que ofrece validación de datos mediante anotaciones tipo Python. Para ejecutar la aplicación, uvicorn main:app –recargue y abra su navegador http://127.0.0.1:8000/items/5?q=somequery. Obtendrá una respuesta JSON como: {«item_id»: 5, «q»: «somequery»} Para obtener acceso a los documentos, visite http://127.0.0.1:8000/docs o http://127.0.0.1 :8000/redoc. Para obtener más detalles, visite https://fastapi.tiangolo.com/ Conclusión Cuando compara Flask con FastAPI, FastAPI es el claro ganador. Sin embargo, si planea construir tanto el front-end como el backend, se prefiere Flask. Migrar su trabajo existente de Flask a FastAPI también es fácil y cuenta con todas las funciones, incluidas auto docs, async, WebSockets, GraphQL y más.

Source link