- Heroku demo (if still online)
- Example branch on DLRSP/example
- Python 3.9+
- Django 4.2+ (see package classifiers for the full matrix)
pip install django-requests-apiINSTALLED_APPS = (
# ...
"requests_api",
# ...
)from requests_api import RequestsApi
client = RequestsApi("https://api.publicapis.org")
r = client.get("/entries")
print(r.json())
github = RequestsApi(
"https://api.github.com",
headers={"Authorization": "token abcdef"},
)
r = github.get("/user", headers={"Accept": "application/json"})
print(r.text)Paths are joined to base_url with a single slash. Absolute URLs (http:// / https://) are passed through unchanged. The package depends on requests (install_requires).
Implementation: requests_api.requests_api and requests_api.helpers; public imports from the package root:
from requests_api import (
copy_get_params_with_overrides,
normalize_api_language,
requests_api_for_base,
)
lang = normalize_api_language(
request.LANGUAGE_CODE,
allowed=("it", "en"),
fallback="en",
)
params = copy_get_params_with_overrides(request, lang=lang)
client = requests_api_for_base("https://www.example.com")
r = client.get("api/resource", params=params, timeout=30)Read via requests_api.conf: Django settings first, then APP_CONFIG["requests_api"], then defaults.
APP_CONFIG["requests_api"] |
Django setting | Notes |
|---|---|---|
CACHED_CLIENTS_MAXSIZE |
REQUESTS_API_CACHED_CLIENTS_MAXSIZE |
Cap for requests_api_for_base (default 8). 0 or below turns caching off. |
DEFAULT_REQUEST_TIMEOUT |
REQUESTS_API_DEFAULT_REQUEST_TIMEOUT |
Optional seconds; default None. Not applied automatically—call get_requests_api_default_request_timeout() and pass timeout= yourself if you want a shared value. |
from requests_api import get_requests_api_default_request_timeout
timeout = get_requests_api_default_request_timeout()
client = requests_api_for_base("https://api.example.com")
r = client.get("v1/x", timeout=timeout if timeout is not None else 30)In tests, call clear_requests_api_client_cache() when you change cache settings. Full write-up: docs/tutorial/configuration.md (MkDocs: Tutorials → Configuration).
git clone --depth=50 --branch=django-requests-api https://github.com/DLRSP/example.git example-requests-api
cd example-requests-api
python manage.py runserverThen open http://127.0.0.1:8000 (install dependencies from that repo’s requirements/ first).
MkDocs sources live under docs/. See Contributing for mkdocs serve.
Public GitHub projects that reference django-requests-api / requests_api (weekly sync via .github/used-in.yaml and update-used-in):
django-iubenda — Django application for privacy and cookies policy managed by Iubenda.
Missing a project? Open a PR or run the workflow manually in your fork.
MIT — see LICENSE.