HTTP/WebSocket proxy for starlette/FastAPI
| CI/CD | |
| Code | |
| Package | |
| Meta |
Documentation: https://wsh032.github.io/fastapi-proxy-lib/
Source Code: https://github.com/WSH032/fastapi-proxy-lib/
- Out of the box ! Helper functions to get FastAPI
app/routerfor proxy conveniently. - Only
Starletteis required for it to work (FastAPIis optional). - Support both HTTP and WebSocket proxy.
- Supports all HTTP methods (
GET,POST, etc.)
- Supports all HTTP methods (
- Support both reverse proxy and forward proxy.
- Transparently and losslessly handle all proxy requests,
- Asynchronous streaming transfer, support file proxy.
- Strict linting and strict-mode Pyright type checking.
- 100% Type Completeness, Code coverage of over 95%.
- Forced keep-alive connections, minimizing proxy latency.
- Handle errors as gracefully as possible.
So, it perfectly supports all features of httpx.AsyncClient, you can even use your custom AsyncClient, Transport.
!!! note
We follow semantic versioning.<br> This is a young project, and before 1.0.0, there may be changes in the API (though we try to avoid that).<br> We recommend pinning to any minor versions, such as 0.1.x.
Pypi will come soon, please install from github temporarily:
pip install fastapi-proxy-lib[standard]@git+https://github.com/WSH032/fastapi-proxy-lib.gitPerhaps you've noticed that we're installing fastapi-proxy-lib[standard] instead of fastapi-proxy-lib. The difference is:
- The former will install
FastAPIat the same time. - The latter installs only the basic dependencies for
fastapi-proxy-lib.
If you only need to use this library with Starlette, you only need to install the latter.
With the helper functions, get the FastAPI proxy server app is very convenient and out of the box:
from fastapi_proxy_lib.fastapi.app import reverse_http_app app = reverse_http_app(base_url="http://www.example.com/foo/")That's all! Now, you can launch the proxy server with uvicorn:
uvicorn main:app --host 127.0.0.1 --port 8000Then, visit http://127.0.0.1:8000/bar?baz=1, you will get the response from http://www.example.com/foo/bar?baz=1.
For support with FastAPI router or only using Starlette, please visit to our documentation 📚 for more details.
- If you find any issues, please don't hesitate to open an issue.
- If you need assistance, feel free to start a discussion.
- Welcome PR
English is not the native language of the author (me), so if you find any areas for improvement in the documentation, your feedback is welcome.
If you think this project helpful, consider giving it a star , which makes me happy. 😄
This project is licensed under the terms of the Apache License 2.0.