Setup¶
Cadwyn is built around FastAPI and supports all of its functionality out of the box. One difference is that Cadwyn requires you to define API versions and extends your routing and swagger to support header-based API versioning.
Installation¶
pip install 'cadwyn[standard]'
The basics¶
First, let's set up the most basic versioned app possible:
from cadwyn import Cadwyn, HeadVersion, Version, VersionBundle
app = Cadwyn(versions=VersionBundle(HeadVersion(), Version("2000-01-01")))
@app.get("/")
async def root():
return {"message": "Hello World"}
and run it using:
fastapi dev main.py
That's it. That's the main difference between setting up FastAPI and Cadwyn: you have to specify your versions. Everything you specify at app level (such as using include_router
or app.get(...)
) will end up unversioned and essentially function like a regular FastAPI route.
Docs¶
If you visit /docs
, instead of the regular swagger, you will see a version dashboard:
Clicking a card will take you to the card's regular swagger page. If you wish to see the openapi.json
for a specific version, just use /openapi.json?version=2000-01-01
(or whatever version you want to get).