mjhea0/awesome-fastapi
A curated list of awesome things related to FastAPI
repo name | mjhea0/awesome-fastapi |
repo link | https://github.com/mjhea0/awesome-fastapi |
homepage | |
language | |
size (curr.) | 348 kB |
stars (curr.) | 2091 |
created | 2020-05-03 |
license | Creative Commons Zero v1.0 Universal |
Awesome FastAPI
A curated list of awesome things related to FastAPI.
FastAPI is a modern, high-performance, batteries-included Python web framework that’s perfect for building RESTful APIs.
Contents
Third-Party Extensions
Admin
- FastAPI Admin - Functional admin panel that provides a user interface for performing CRUD operations on your data.
Auth
- FastAPI Auth - Pluggable auth that supports the OAuth2 Password Flow with JWT access and refresh tokens.
- FastAPI Cloud Auth - Simple integration between FastAPI and cloud authentication services (AWS Cognito, Auth0, Firebase Authentication).
- FastAPI Login - Account management and authentication (based on Flask-Login).
- FastAPI JWT Auth - JWT auth (based on Flask-JWT-Extended).
- FastAPI Permissions - Row-level permissions.
- FastAPI Security - Implements authentication and authorization as dependencies in FastAPI.
- FastAPI Simple Security - Out-of-the-box API key security manageable through path operations.
- FastAPI Users - Account management, authentication, authorization.
Databases
ORMs
- FastAPI SQLAlchemy - Simple integration between FastAPI and SQLAlchemy.
- FastAPIwee - A simple way to create REST API based on PeeWee models.
- GINO - A lightweight asynchronous ORM built on top of SQLAlchemy core for Python asyncio.
- ORM - An async ORM.
- ormar - Ormar is an async ORM that uses pydantic validation and can be used directly in FastAPI requests and responses so you are left with only one set of models to maintain. Alembic migrations included.
- FastAPI Example - Using FastAPI with ormar.
- Piccolo - An async ORM and query builder, supporting Postgres and SQLite, with batteries (migrations, security, etc).
- FastAPI Examples - Using FastAPI with Piccolo.
- Piccolo Admin - A powerful and modern admin GUI, using the Piccolo ORM.
- Tortoise ORM - An easy-to-use asyncio ORM (Object Relational Mapper) inspired by Django.
- FastAPI Example - An example of the Tortoise-ORM FastAPI integration.
- Tutorial: Setting up Tortoise ORM with FastAPI
- Aerich - Tortoise ORM migrations tools.
Query Builders
- asyncpgsa - A wrapper around asyncpg for use with SQLAlchemy Core.
- Databases - Async SQL query builder that works on top of the SQLAlchemy Core expression language.
ODMs
- Beanie - Asynchronous Python ODM for MongoDB, based on Motor and Pydantic, which supports data and schema migrations out of the box.
- MongoEngine - A Document-Object Mapper (think ORM, but for document databases) for working with MongoDB from Python.
- Motor - Asynchronous Python driver for MongoDB.
- ODMantic - AsyncIO MongoDB ODM integrated with Pydantic.
Other Tools
- Pydantic-SQLAlchemy - Convert SQLAlchemy models to Pydantic models.
- FastAPI-CamelCase - CamelCase JSON support for FastAPI utilizing Pydantic.
- CamelCase Models with FastAPI and Pydantic - Accompanying blog post from the author of the extension.
Developer Tools
- FastAPI Code Generator - Create a FastAPI app from an OpenAPI file, enabling schema-driven development.
- FastAPI Client Generator - Generate a mypy- and IDE-friendly API client from an OpenAPI spec.
- FastAPI Profiler - A FastAPI Middleware of joerick/pyinstrument to check your service performance.
- FastAPI Versioning - API versioning.
- Jupyter Notebook REST API - Run your Jupyter notebooks as RESTful API endpoints.
- Manage FastAPI - CLI tool for generating and managing FastAPI projects.
- msgpack-asgi - Automatic MessagePack content negotiation.
- FastAPI Mail - Lightweight mail system for sending emails and attachments (individual and bulk).
Utils
- FastAPI Cache - A simple lightweight cache system.
- FastAPI Chameleon - Adds integration of the Chameleon template language to FastAPI.
- FastAPI Contrib - Opinionated set of utilities: pagination, auth middleware, permissions, custom exception handlers, MongoDB support, and Opentracing middleware.
- FastAPI CRUDRouter - A FastAPI router that automatically creates and documents CRUD routes for your models.
- FastAPI Jinja - Adds integration of the Jinja template language to FastAPI.
- FastAPI Limiter - A request rate limiter for FastAPI.
- FastAPI MQTT - An extension for the MQTT protocol.
- FastAPI Pagination - Pagination for FastAPI.
- FastAPI Plugins - Redis and Scheduler plugins.
- FastAPI ServiceUtils - Generator for creating API services.
- FastAPI SocketIO - Easy integration for FastAPI and SocketIO.
- FastAPI Utilities - Reusable utilities: class-based views, response inferring router, periodic tasks, timing middleware, SQLAlchemy session, OpenAPI spec simplification.
- FastAPI Websocket Pub/Sub - The classic pub/sub pattern made easily accessible and scalable over the web and across your cloud in realtime.
- FastAPI Websocket RPC - RPC (bidirectional JSON RPC) over Websockets made easy, robust, and production ready.
- OpenTelemetry FastAPI Instrumentation - Library provides automatic and manual instrumentation of FastAPI web frameworks, instrumenting http requests served by applications utilizing the framework.
- Prerender Python Starlette - Starlette middleware for Prerender.
- Prometheus FastAPI Instrumentator - A configurable and modular Prometheus Instrumentator for your FastAPI application.
- SlowApi - Rate limiter (based on Flask-Limiter).
- Starlette Context - Allows you to store and access the request data anywhere in your project, useful for logging.
- Starlette Exporter - One more prometheus integration for FastAPI and Starlette.
- Starlette OpenTracing - Opentracing support for Starlette and FastAPI.
- Starlette Prometheus - Prometheus integration for FastAPI and Starlette.
Resources
Official Resources
- Documentation - Comprehensive documentation.
- Tutorial - Official tutorial showing you how to use FastAPI with most of its features, step by step.
- Source Code - Hosted on GitHub.
- Gitter Chat - Chat with other FastAPI users.
External Resources
- TestDriven.io FastAPI - Multiple FastAPI-specific articles that focus on developing and testing production-ready RESTful APIs, serving up machine learning models, and more.
Podcasts
- Build The Next Generation Of Python Web Applications With FastAPI - In this episode of Podcast Init, the create of FastAPI, Sebastián Ramirez, shares his motivations for building FastAPI and how it works under the hood.
- FastAPI on PythonBytes - Nice overview of the project.
Articles
- FastAPI has Ruined Flask Forever for Me
- Why we switched from Flask to FastAPI for production machine learning - In-depth look at why you may want to move from Flask to FastAPI.
Tutorials
- Async SQLAlchemy with FastAPI - Learn how to use SQLAlchemy asynchronously.
- Demystifying Authentication with FastAPI and a Frontend - Add token-based authentication.
- Deploy a Dockerized FastAPI App to Google Cloud Platform - A short guide to deploying a Dockerized Python app to Google Cloud Platform using Cloud Run and a SQL instance.
- Deploy Machine Learning Models with Keras, FastAPI, Redis and Docker
- Deploying Iris Classifications with FastAPI and Docker - Dockerizing a FastAPI application.
- Developing and Testing an Asynchronous API with FastAPI and Pytest - Develop and test an asynchronous API with FastAPI, Postgres, Pytest, and Docker using Test-Driven Development.
- FastAPI for Flask Users - Learn FastAPI with a side-by-side code comparison to Flask.
- FastAPI Microservice Patterns - Blog post series with exemplary implementations of microservice patterns.
- Local Development Environment - Skaffold, docker, kubectl and minikube in a nutshell.
- Service discovery in Container Orchestration Platforms - Enabling FastAPI service communication in Kubernetes explained.
- Asynchronous Communication - Enabling loosely coupled services with messaging.
- Application Monitoring - Application metric monitoring with Prometheus and Grafana.
- Serverless Deployment - About the current status of the compatibility between FastAPI and Kubernetes-native FaaS platforms.
- How to deploy your ConvNet classifier with Keras and FastAPI - Deploy a machine learning model via a web-based API.
- How to monitor your FastAPI service - Explains how to implement Application Performance Monitoring (APM) using OpenTelemetry and Datadog/Jaeger.
- Implementing FastAPI Services – Abstraction and Separation of Concerns - FastAPI application and service structure for a more maintainable codebase.
- Introducing FARM Stack - FastAPI, React, and MongoDB - Getting started with a complete FastAPI web application stack.
- Introduction to the FastAPI Python Framework - Quick intro to FastAPI.
- Porting Flask to FastAPI for ML Model Serving - Comparison of Flask vs FastAPI.
- Real-time data streaming using FastAPI and WebSockets - Learn how to stream data from FastAPI directly into a real-time chart.
- Running FastAPI applications in production - Use Gunicorn with systemd for production deployments.
- Serving Machine Learning Models with FastAPI in Python - Use FastAPI to quickly and easily deploy and serve machine learning models in Python as a RESTful API.
- Streaming video with FastAPI - Learn how to serve video streams.
- Using Hypothesis and Schemathesis to Test FastAPI - Apply property-based testing to FastAPI.
Talks
- PyConBY 2020: Serve ML models easily with FastAPI - From the talk by Sebastian Ramirez you will learn how to easily build a production-ready web (JSON) API for your ML models with FastAPI, including best practices by default.
- PyCon UK 2019: FastAPI from the ground up - This talk shows how to build a simple REST API for a database from the ground up using FastAPI.
Videos
- Building a Stock Screener with FastAPI - A you build a web-based stock screener with FastAPI, you’ll be introduced to many of FastAPI’s features, including pydantic models, dependency injection, background tasks, and SQLAlchemy integration.
- Building Web APIs Using FastAPI - Use FastAPI to build a web application programming interface (RESTful API).
- FastAPI - A Web Framework for Python - See how to do numeric validations with FastAPI.
- FastAPI vs. Django vs. Flask - Which framework is best for Python in 2020? Which uses async/await the best? Which is the fastest?
- Serving Machine Learning Models As API with FastAPI - Build a machine learning API with FastAPI.
Courses
- Test-Driven Development with FastAPI and Docker - Learn how to build, test, and deploy a text summarization microservice with Python, FastAPI, and Docker.
- Modern APIs with FastAPI and Python - A course designed to get you creating new APIs running in the cloud with FastAPI quickly.
- Full Web Apps with FastAPI Course - You’ll learn to build full web apps with FastAPI, equivalent to what you can do with Flask or Django.
Hosting
PaaS
(Platforms-as-a-Service)
- Heroku (Step-by-step tutorial, ML model on Heroku tutorial)
- AWS Elastic Beanstalk
- Google App Engine
- Microsoft Azure App Service
- Deta (example)
IaaS
(Infrastructure-as-a-Service)
Serverless
Frameworks:
- Chalice
- Mangum - Adapter for running ASGI applications with AWS Lambda and API Gateway.
- Vercel - (formerly Zeit) (example).
- Zappa
Compute:
Projects
Boilerplate
- Full Stack FastAPI and PostgreSQL - Base Project Generator - Full stack, modern web application generator, which includes FastAPI, PostgreSQL, Docker, Celery, Vue frontend, automatic HTTPS and more (developed by the creator of FastAPI, Sebastián Ramírez).
- FastAPI and Tortoise ORM - Powerful but simple template for web APIs w/ FastAPI (as web framework) and Tortoise-ORM (for working via database without headache).
- FastAPI Model Server Skeleton - Skeleton app to serve machine learning models production-ready.
- cookiecutter-spacy-fastapi - Quick deployments of spaCy models with FastAPI.
- cookiecutter-fastapi - Cookiecutter template for FastAPI projects using: Machine Learning, Poetry, Azure Pipelines and pytest.
- openapi-python-client - Generate modern FastAPI Python clients (via FastAPI) from OpenAPI.
- Pywork - Yeoman generator to scaffold a FastAPI app.
- uvicorn-gunicorn-fastapi-docker - Docker image with Uvicorn managed by Gunicorn for high-performance FastAPI web applications in Python 3.7 and 3.6 with performance auto-tuning.
- fastapi-gino-arq-uvicorn - Tempate for a high-performance async REST API, in Python. FastAPI + GINO + Arq + Uvicorn (w/ Redis and PostgreSQL).
- FastAPI and React Template - Full stack cookiecutter boilerplate using FastAPI, TypeScript, Docker, PostgreSQL, and React.
- FastAPI Nano - Simple FastAPI template with factory pattern architecture.
- inboard - Docker images to power your FastAPI apps and help you ship faster.
Open Source Projects
- Awesome FastAPI Projects - Organized list of projects that use FastAPI.
- Bitcart - Platform for merchants, users and developers which offers easy setup and use.
- Coronavirus-tg-api - API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak.
- Dispatch - Manage security incidents.
- FastAPI CRUD Example:
- FastAPI Websocket Broadcast - Websocket ‘broadcast’ demo.
- FastAPI with Celery, RabbitMQ, and Redis - Minimal example utilizing FastAPI and Celery with RabbitMQ for task queue, Redis for Celery backend, and Flower for monitoring the Celery tasks.
- JSON-RPC Server - JSON-RPC server based on FastAPI.
- Mailer - Dead-simple mailer micro-service for static websites.
- OPAL (Open Policy Administration Layer) - Real-time authorization updates on top of Open-Policy; built with FastAPI, Typer, and FastAPI WebSocket pub/sub.
- RealWorld Example App - mongo
- RealWorld Example App - postgres
- redis-streams-fastapi-chat - A simple Redis Streams backed chat app using Websockets, Asyncio and FastAPI/Starlette.
- Sprites as a service - Generate your personal 8-bit avatars using Cellular Automata.
- Slackers - Slack webhooks API.
- TermPair - View and control terminals from your browser with end-to-end encryption.
- Universities - API service for obtaining information about +9600 universities worldwide.
NOTE: This project is powered by TestDriven.io. Please support this open source project by purchasing our FastAPI course: Test-Driven Development with FastAPI and Docker.