A lightweight and fast ASGI-based Python web framework for building APIs with automatic OpenAPI documentation.
Project description
MirAPI
MirAPI is a lightweight, fast, and easy-to-use ASGI-based Python web framework for building APIs. It's designed to be simple yet powerful, allowing developers to quickly create robust asynchronous web applications and RESTful APIs with automatic OpenAPI (Swagger) documentation.Features
- ASGI-based for high performance and scalability
- Easy-to-use routing system
- Automatic OpenAPI (Swagger) documentation generation
- Built-in support for JSON responses
- Type hinting and Pydantic model integration
- Lightweight and fast asynchronous application
- Customizable error handling
- Support for all standard HTTP methods
- New: class-based handlers for route management
- New: Added
APIRouter
for modular route management and composition. - New: Introduced
include_router
method for integrating external routers seamlessly.
Installation
You can install MirAPI using pip:
pip install mirapi
Quick Start
Here's a simple example to get you started with MirAPI:
from mirapi import MirAPI
from pydantic import BaseModel
app = MirAPI(title="My API", version="1.0.0")
class Item(BaseModel):
name: str
price: float
@app.get("/")
async def root():
return {"message": "Hello, World!"}
@app.post("/items")
async def create_item(item: Item):
return {"item": item, "message": "Item created successfully"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
This example creates a simple asynchronous API with two endpoints: a GET route at the root path and a POST route for creating items.
Advanced Usage
Route Parameters
MirAPI supports path parameters in your routes:
@app.get("/items/{item_id}")
async def get_item(item_id: int):
return {"item_id": item_id}
Request Body Validation
Use Pydantic models to validate request bodies:
from pydantic import BaseModel
class User(BaseModel):
username: str
email: str
age: int
@app.post("/users")
async def create_user(user: User):
return {"user": user, "message": "User created successfully"}
Error Handling
MirAPI provides built-in error handling, but you can also customize error responses:
from starlette.exceptions import HTTPException
from starlette.responses import JSONResponse
@app.route("/custom_error")
async def custom_error(request):
raise HTTPException(status_code=400, detail="Custom error message")
@app.exception_handler(HTTPException)
async def http_exception_handler(request, exc):
return JSONResponse(
status_code=exc.status_code,
content={"message": exc.detail},
)
Documentation
MirAPI automatically generates OpenAPI (Swagger) documentation for your API. You can access the interactive API documentation by navigating to /docs
in your browser when running your application.
Dependencies
MirAPI depends on the following packages:
- starlette (0.39.2)
- parse (1.20.2)
- uvicorn (0.31.1)
- pydantic (2.9.2)
These dependencies will be automatically installed when you install MirAPI.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Support
If you like this project, please consider supporting it by making a donation:
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Inspired by modern ASGI-based Python web frameworks
- Built with love for the Python community
For more detailed information and advanced usage, please refer to the documentation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mirapi-0.0.3.tar.gz
.
File metadata
- Download URL: mirapi-0.0.3.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 646d738fd79ca50558bc81db8f96cbcc933c0fde063fbe8cd0448b6f2363fe3d |
|
MD5 | 5116fa6cc1bc9b4845877271184805a6 |
|
BLAKE2b-256 | 1bc6d16b80f23ff4ec163543ad7e0b62e7ff2bc41efa279eb7a18d3b4c6d4068 |
File details
Details for the file mirapi-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: mirapi-0.0.3-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74fea1486a6af94e14692d8301155849e0daf4626b124f5e283f951e18edd644 |
|
MD5 | 3fd8a39afc79fc529774c6b3b290e2c6 |
|
BLAKE2b-256 | 716271242f42a392ad3673fcf7c23b40f3f75446e43b923ab2fd0b48d259f36b |