-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
79 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,85 +1,125 @@ | ||
<p align="center"> | ||
<picture> | ||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/apitally/assets/main/logo-vertical-dark.png"> | ||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/apitally/assets/main/logo-vertical-light.png"> | ||
<img alt="Apitally logo" src="https://raw.githubusercontent.com/apitally/assets/main/logo-vertical-light.png"> | ||
</picture> | ||
</p> | ||
|
||
<p align="center"><b>Your refreshingly simple REST API companion.</b></p> | ||
|
||
<p align="center"><i>Apitally offers API traffic monitoring and integrated API key management that is extremely easy to set up and use with new and existing API projects. No assumptions made about your infrastructure, no extra tools for you to host and maintain.</i></p> | ||
|
||
<p align="center">🔗 <b><a href="https://apitally.io" target="_blank">apitally.io</a></b></p> | ||
|
||
![Apitally screenshots](https://raw.githubusercontent.com/apitally/assets/main/overview.png) | ||
|
||
--- | ||
|
||
# Apitally client for Python | ||
|
||
[![Tests](https://github.com/apitally/python-client/actions/workflows/tests.yaml/badge.svg?event=push)](https://github.com/apitally/python-client/actions) | ||
[![Codecov](https://codecov.io/gh/apitally/python-client/graph/badge.svg?token=UNLYBY4Y3V)](https://codecov.io/gh/apitally/python-client) | ||
[![PyPI](https://img.shields.io/pypi/v/apitally?logo=pypi&logoColor=white&color=%23006dad)](https://pypi.org/project/apitally/) | ||
|
||
Apitally client library for Python. | ||
This client library currently supports the following frameworks: | ||
|
||
Currently supports the following frameworks: | ||
- [FastAPI](https://docs.apitally.io/frameworks/fastapi) | ||
- [Starlette](https://docs.apitally.io/frameworks/starlette) | ||
- [Flask](https://docs.apitally.io/frameworks/flask) | ||
- [Django Ninja](https://docs.apitally.io/frameworks/django-ninja) | ||
- [Django REST Framework](https://docs.apitally.io/frameworks/django-rest-framework) | ||
|
||
- [FastAPI](https://fastapi.tiangolo.com/) | ||
- [Starlette](https://www.starlette.io/) | ||
- [Django Ninja](https://django-ninja.rest-framework.com/) | ||
- [Django REST Framework](https://www.django-rest-framework.org/) | ||
- [Flask](https://flask.palletsprojects.com/) | ||
|
||
## Installation | ||
## Install | ||
|
||
Use `pip` to install and provide your framework of choice as an extra, for example: | ||
|
||
```bash | ||
pip install apitally[fastapi] | ||
``` | ||
|
||
The available extras are: `fastapi`, `starlette`, `django_ninja`, `django_rest_framework` and `flask`. | ||
The available extras are: `fastapi`, `starlette`, `flask`, `django_ninja` and `django_rest_framework`. | ||
|
||
## Basic usage | ||
## Usage | ||
|
||
Below are basic usage examples for each supported framework. For more detailed instructions and examples, including on how to use Apitally API key authentication, see the [documentation](https://docs.apitally.com/). | ||
Below are basic usage examples for each supported framework. For further instructions and examples, including how to identify consumers and use API key authentication, check out our [documentation](https://docs.apitally.io/). | ||
|
||
### With FastAPI | ||
### FastAPI | ||
|
||
```python | ||
from fastapi import FastAPI | ||
from apitally.fastapi import ApitallyMiddleware | ||
|
||
app = FastAPI() | ||
app.add_middleware(ApitallyMiddleware, client_id="<your-client-id>") | ||
app.add_middleware( | ||
ApitallyMiddleware, | ||
client_id="your-client-id", | ||
env="your-env-name", | ||
) | ||
``` | ||
|
||
### With Starlette | ||
### Starlette | ||
|
||
```python | ||
from starlette.applications import Starlette | ||
from apitally.starlette import ApitallyMiddleware | ||
|
||
app = Starlette() | ||
app.add_middleware(ApitallyMiddleware, client_id="<your-client-id>") | ||
app = Starlette(routes=[...]) | ||
app.add_middleware( | ||
ApitallyMiddleware, | ||
client_id="your-client-id", | ||
env="your-env-name", | ||
) | ||
``` | ||
|
||
### With Django Ninja | ||
### Flask | ||
|
||
```python | ||
from flask import Flask | ||
from apitally.flask import ApitallyMiddleware | ||
|
||
app = Flask(__name__) | ||
app.wsgi_app = ApitallyMiddleware( | ||
app, | ||
client_id="your-client-id", | ||
env="your-env-name", | ||
) | ||
``` | ||
|
||
### Django Ninja | ||
|
||
In your Django `settings.py` file: | ||
|
||
```python | ||
MIDDLEWARE = [ | ||
# Other middlewares first ... | ||
"apitally.django_ninja.ApitallyMiddleware", | ||
] | ||
APITALLY_MIDDLEWARE = { | ||
"client_id": "<your-client-id>", | ||
"client_id": "your-client-id", | ||
"env": "your-env-name", | ||
} | ||
``` | ||
|
||
### With Django REST Framework | ||
### Django REST Framework | ||
|
||
In your Django `settings.py` file: | ||
|
||
```python | ||
MIDDLEWARE = [ | ||
# Other middlewares first ... | ||
"apitally.django_rest_framework.ApitallyMiddleware", | ||
] | ||
APITALLY_MIDDLEWARE = { | ||
"client_id": "<your-client-id>", | ||
"client_id": "your-client-id", | ||
"env": "your-env-name", | ||
} | ||
``` | ||
|
||
### With Flask | ||
## Getting help | ||
|
||
```python | ||
from flask import Flask | ||
from apitally.flask import ApitallyMiddleware | ||
If you need help please join our [Apitally community on Slack](https://apitally-community.slack.com/) or [create a new discussion](https://github.com/orgs/apitally/discussions/categories/q-a) on GitHub. | ||
|
||
app = Flask(__name__) | ||
app.wsgi_app = ApitallyMiddleware(app, client_id="<your-client-id>") | ||
``` | ||
## License | ||
|
||
This library is licensed under the terms of the MIT license. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,10 +6,18 @@ build-backend = "poetry_dynamic_versioning.backend" | |
name = "apitally" | ||
version = "0.0.0" | ||
description = "Apitally client library for Python" | ||
authors = ["Simon Gurcke <[email protected]>"] | ||
license = "MIT License" | ||
repository = "https://github.com/apitally/apitally-python" | ||
readme = "README.md" | ||
authors = ["Apitally <[email protected]>"] | ||
license = "MIT License" | ||
homepage = "https://docs.apitally.io" | ||
documentation = "https://docs.apitally.io" | ||
repository = "https://github.com/apitally/python-client" | ||
classifiers = [ | ||
"Framework :: FastAPI", | ||
"Framework :: Django", | ||
"Framework :: Flask", | ||
"Intended Audience :: Developers", | ||
] | ||
|
||
[tool.poetry.dependencies] | ||
backoff = ">=2.0.0" | ||
|