starlette/docs/third-party-packages.md

119 lines
4.6 KiB
Markdown

Starlette has a rapidly growing community of developers, building tools that integrate into Starlette, tools that depend on Starlette, etc.
Here are some of those third party packages:
## Backports
### Python 3.5 port
<a href="https://github.com/em92/starlette" target="_blank">GitHub</a>
## Plugins
### Starlette APISpec
<a href="https://github.com/Woile/starlette-apispec" target="_blank">GitHub</a>
Simple APISpec integration for Starlette.
Document your REST API built with Starlette by declaring OpenAPI (Swagger)
schemas in YAML format in your endpoint's docstrings.
### SpecTree
<a href="https://github.com/0b01001001/spectree" target="_blank">GitHub</a>
Generate OpenAPI spec document and validate request & response with Python annotations. Less boilerplate code(no need for YAML).
### Mangum
<a href="https://github.com/erm/mangum" target="_blank">GitHub</a>
Serverless ASGI adapter for AWS Lambda & API Gateway.
### Nejma
<a href="https://github.com/taoufik07/nejma" target="_blank">GitHub</a>
Manage and send messages to groups of channels using websockets.
Checkout <a href="https://github.com/taoufik07/nejma-chat" target="_blank">nejma-chat</a>, a simple chat application built using `nejma` and `starlette`.
### ChannelBox
<a href="https://github.com/Sobolev5/channel-box" target="_blank">GitHub</a>
Another solution for websocket broadcast. Send messages to channel groups from any part of your code.
Checkout <a href="http://backend.starlette-vue.site/chat/chat1/" target="_blank">channel-box-chat</a>, a simple chat application built using `channel-box` and `starlette`.
### Scout APM
<a href="https://github.com/scoutapp/scout_apm_python" target="_blank">GitHub</a>
An APM (Application Performance Monitoring) solution that can
instrument your application to find performance bottlenecks.
### Starlette Prometheus
<a href="https://github.com/perdy/starlette-prometheus" target="_blank">GitHub</a>
A plugin for providing an endpoint that exposes [Prometheus](https://prometheus.io/) metrics based on its [official python client](https://github.com/prometheus/client_python).
### webargs-starlette
<a href="https://github.com/sloria/webargs-starlette" target="_blank">GitHub</a>
Declarative request parsing and validation for Starlette, built on top
of [webargs](https://github.com/marshmallow-code/webargs).
Allows you to parse querystring, JSON, form, headers, and cookies using
type annotations.
### Authlib
<a href="https://github.com/lepture/Authlib" target="_blank">GitHub</a> |
<a href="https://docs.authlib.org/en/latest/" target="_blank">Documentation</a>
The ultimate Python library in building OAuth and OpenID Connect clients and servers. Check out how to integrate with [Starlette](https://docs.authlib.org/en/latest/client/starlette.html).
### Starlette OAuth2 API
<a href="https://gitlab.com/jorgecarleitao/starlette-oauth2-api" target="_blank">Gitlab</a>
A starlette middleware to add authentication and authorization through JWTs.
It relies solely on an auth provider to issue access and/or id tokens to clients.
### Starlette Context
<a href="https://github.com/tomwojcik/starlette-context" target="_blank">GitHub</a>
Middleware for Starlette that allows you to store and access the context data of a request.
Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.
## Frameworks
### Responder
<a href="https://github.com/taoufik07/responder" target="_blank">GitHub</a> |
<a href="https://python-responder.org/en/latest/" target="_blank">Documentation</a>
Async web service framework. Some Features: flask-style route expression,
yaml support, OpenAPI schema generation, background tasks, graphql.
### FastAPI
<a href="https://github.com/tiangolo/fastapi" target="_blank">GitHub</a> |
<a href="https://fastapi.tiangolo.com/" target="_blank">Documentation</a>
High performance, easy to learn, fast to code, ready for production web API framework.
Inspired by **APIStar**'s previous server system with type declarations for route parameters, based on the OpenAPI specification version 3.0.0+ (with JSON Schema), powered by **Pydantic** for the data handling.
### Flama
<a href="https://github.com/perdy/flama/" target="_blank">GitHub</a> |
<a href="https://flama.perdy.io/" target="_blank">Documentation</a>
Formerly Starlette API.
Flama aims to bring a layer on top of Starlette to provide an **easy to learn** and **fast to develop** approach for building **highly performant** GraphQL and REST APIs. In the same way of Starlette is, Flama is a perfect option for developing **asynchronous** and **production-ready** services.