Skip to main content

FastAPI-like router for Starlette with msgspec integration

Project description

starlette-msgspec

A FastAPI-like router for Starlette with msgspec integration for automatic request validation and OpenAPI documentation.

Installation

# Install with pip
pip install starlette-msgspec

# Or with uv
uv pip install starlette-msgspec

# For development on this library
uv sync --dev

Usage

from starlette.applications import Starlette
from starlette_msgspec import MsgspecRouter, add_openapi_routes
import msgspec
from typing import List


# Define your data model with msgspec
class Item(msgspec.Struct):
    name: str
    description: str = ""
    price: float
    tax: float = 0.0


app = Starlette()
router = MsgspecRouter()


@router.post("/items", tags=["items"])
async def create_item(body: Item):
    return body


@router.get("/items", tags=["items"])
async def get_items() -> List[Item]:
    # ... implementation
    return [Item(name="Example", price=10.5)]


# Include the router and add OpenAPI documentation routes
router.include_router(app)
add_openapi_routes(app, router)

💡 For a more comprehensive example showing multiple routers, different data models, and advanced features, check out examples/basic_app.py.

Features

  • FastAPI-like router with method, path, and tags
  • Automatic request validation based on msgspec types
  • OpenAPI documentation generation using msgspec's built-in schema capabilities
  • Type annotations for request body and response

Running the example

# Install dependencies
uv pip install -e ".[test]" uvicorn

# Run the example
python examples/basic_app.py

Then visit http://localhost:8000/docs to see the Swagger UI documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starlette_msgspec-0.1.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

starlette_msgspec-0.1.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file starlette_msgspec-0.1.0.tar.gz.

File metadata

  • Download URL: starlette_msgspec-0.1.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.15

File hashes

Hashes for starlette_msgspec-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b09af7670b2510119bd48ef64f83fea3f1445d611b7b6a6ecd2b29b7fb70cbb6
MD5 ce95075a7b9eb1acea41ddff6d4a23fd
BLAKE2b-256 6b3c132560837d932840fee1741c65ebbe5aacdc171aa623ad8ecb62a27cb01e

See more details on using hashes here.

File details

Details for the file starlette_msgspec-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for starlette_msgspec-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a099649cfe862bf95ed55641d23bfb9c6b8dfd5bd407b429fda21dd5a115f1d3
MD5 877947ad242b21eeb5b316a14ccb311c
BLAKE2b-256 6cabf3bfaa4418d3839f2b79fe0192eb04aabe24704e0809ff3c9b9ef65ff929

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page