Building APIs can feel like you’re piecing together a massive puzzle. But one essential piece that often makes it all fall into place is documentation. Without good documentation, developers might find it tough to understand how to interact with your API. That’s where FastAPI comes in clutch. It’s this slick, modern Python web framework that has your back with built-in automatic API documentation, thanks largely to Swagger UI. Let’s break down how you can get all this goodness up and running.
Before anything else, FastAPI needs to be installed. If you haven’t already done this, it’s pretty straightforward. You just need to use pip:
pip install fastapi
But hold up, there’s something else you need—an ASGI server to run your FastAPI app. Uvicorn is a popular pick, often recommended:
pip install uvicorn
Now, let’s talk about creating a basic FastAPI app. This not only sets up your API but also showcases how FastAPI magically generates documentation for you. Check out this simple sample:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI!"}
@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):
return {"item_id": item_id, "query_param": query_param}
In this example, FastAPI is smart enough to pull information from the function signatures, including parameter types, default values, and whatever you write in the docstrings.
Running this FastAPI app requires firing up Uvicorn, and the command is:
uvicorn main:app --reload
It gets the server up and you can now hit your API endpoints.
What’s cool about FastAPI is that it uses Swagger UI for an interactive documentation interface. To see this magic, you just need to navigate to http://127.0.0.1:8000/docs
in your browser. This URL brings up Swagger UI which lets developers dig into and test API endpoints. It’s like having a complete guide whispering in your ear, showing you parameters, request/response models, and even example requests.
But wait, there’s more. You can customize Swagger UI to match your preferences. Maybe you want to turn off syntax highlighting or jazz up the theme. No stress, it’s all possible.
If syntax highlighting isn’t your jam, you can disable it like so:
from fastapi import FastAPI
app = FastAPI(swagger_ui_parameters={"syntaxHighlight": False})
@app.get("/users/{username}")
async def read_user(username: str):
return {"message": f"Hello {username}"}
Craving a theme change? Set the "syntaxHighlight.theme"
parameter to something snazzier:
from fastapi import FastAPI
app = FastAPI(swagger_ui_parameters={"syntaxHighlight.theme": "obsidian"})
@app.get("/users/{username}")
async def read_user(username: str):
return {"message": f"Hello {username}"}
You can even override default Swagger UI settings like deepLinking
and showExtensions
:
from fastapi import FastAPI
app = FastAPI(swagger_ui_parameters={"deepLinking": False})
@app.get("/users/{username}")
async def read_user(username: str):
return {"message": f"Hello {username}"}
FastAPI doesn’t just stop at syntax themes and toggles. You can dive deeper into customization with settings for layout and display by adjusting the swagger_ui_parameters
dictionary:
from fastapi import FastAPI
app = FastAPI(swagger_ui_parameters={
"dom_id": "#swagger-ui",
"layout": "StandaloneLayout"
})
@app.get("/users/{username}")
async def read_user(username: str):
return {"message": f"Hello {username}"}
But if you want another take on API documentation, FastAPI also supports ReDoc. This alternative tool puts a clean and responsive twist on documentation, which you can admire by heading to http://127.0.0.1:8000/redoc
.
You even get to decide where these docs live by configuring URLs for both Swagger UI and ReDoc:
from fastapi import FastAPI
app = FastAPI(docs_url="/documentation", redoc_url=None)
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]
Metadata can be another essential finisher for your API. FastAPI allows you to set the title, summary, description, and version to give it that extra professional touch. Here’s how you can do it:
from fastapi import FastAPI
app = FastAPI(
title="My API",
description="A short description of my API.",
version="1.0.0",
contact={
"name": "John Doe",
"email": "[email protected]",
"url": "https://www.example.com/contact"
},
license_info={
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
)
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]
Using FastAPI streamlines your development process by automating your API documentation. This approach saves a boatload of time, ensuring your docs stay in lockstep with your evolving code. When your documentation is this accurate and comprehensive, it makes for top-notch collaboration between developers and API consumers.
Thanks to FastAPI’s thoughtful integration with tools like Swagger UI and ReDoc, setting up automatic API documentation becomes a breeze. It doesn’t matter if you’re working on a straightforward API or a complex microservice ecosystem—FastAPI’s documentation features ensure your API is well-documented, thoroughly understandable, and easily accessible.
So go ahead, take the leap! Dive into FastAPI and make your API documentation something developers will actually want to use.