DEV Community

Cover image for Day 5 : Real-World Parameter Integration in FastAPI (Path + Query + Body)
Utkarsh Rastogi
Utkarsh Rastogi

Posted on • Edited on

3

Day 5 : Real-World Parameter Integration in FastAPI (Path + Query + Body)

Welcome to Day 5 of the FastAPI Zero to Hero series!

Today we combine the three types of parameters you'll encounter in any real-world backend project:

  • ✅ Path Parameters
  • ✅ Query Parameters
  • ✅ Body Parameters

📌 Scenario: Update a User's Profile with Notifications

We’ll build an API where:

  • The user is identified via Path
  • Notification preference is passed via Query
  • New profile data is passed in the Request Body

🧱 Install or Activate Your FastAPI Environment

If you haven't yet:

pip install fastapi uvicorn
Enter fullscreen mode Exit fullscreen mode

🧪 Step-by-Step Code

📁 File: test.py

from fastapi import FastAPI, Path, Query, Body
from pydantic import BaseModel
from typing import Optional

app = FastAPI()

# Request Body Model
class UserUpdateRequest(BaseModel):
    name: str
    email: str
    age: Optional[int] = None

# Response Model
class UserResponse(BaseModel):
    id: int
    name: str
    notify: bool

@app.put("/user/{user_id}", response_model=UserResponse)
def update_user(
    user_id: int = Path(..., description="ID of the user to update"),
    notify: bool = Query(False, description="Whether to notify the user"),
    user: UserUpdateRequest = Body(...)
):
    # Simulate logic: update user in DB, send notification, etc.
    print(f"Updating user {user_id}: {user.dict()}")
    if notify:
        print(f"Sending notification to {user.email}...")

    return UserResponse(
        id=user_id,
        name=user.name,
        notify=notify
    )
Enter fullscreen mode Exit fullscreen mode

🚀 Test Your Endpoint

✅ 1. Run the Server

Make sure your test.py file is saved, then run it using Uvicorn:

uvicorn test:app --host 0.0.0.0 --reload --port 9002
Enter fullscreen mode Exit fullscreen mode

🧪 2. Use Swagger UI (Recommended for Beginners)

FastAPI comes with auto-generated interactive API documentation via Swagger UI.

🧭 Steps to Test:

  1. Open your browser.
  2. Navigate to: http://localhost:9002/docs
  3. Locate the PUT /user/{user_id} endpoint.
  4. Click on it → then click "Try it out".
  5. Fill in the fields:
  • user_id: 123
  • notify: true
  • JSON Body:
 {
       "name": "Utkarsh",
       "email": "utkarsh@example.com",
       "age": 30
     }
Enter fullscreen mode Exit fullscreen mode
  1. Click Execute.

✅ You will see:

  • The full request URL
  • The response status
  • The returned JSON result

It's a great way to explore and test your API without writing any client code!

Input

Output:

Output


🧠 What You Just Did

Here's a breakdown of how different FastAPI components worked together in your endpoint:

Part What it Does
Path Identifies the user by user_id
Query Controls logic flow (e.g., whether to notify)
Body Sends structured profile update data (JSON)
Response Filters output using response_model to limit what gets returned

🧰 Bonus: Add Validation to Your Parameters

You can enhance your endpoint by adding validation rules to the Path and Query parameters:

user_id: int = Path(..., gt=0, description="User ID must be positive"),
notify: bool = Query(False, description="Notify user after update"),

Enter fullscreen mode Exit fullscreen mode
  • gt=0 ensures the user_id is a positive integer.
  • description improves the auto-generated API documentation by adding helpful context to parameters.

🧪 Explore Your API at /docs

Run your server if it’s not running already:

uvicorn test:app --host 0.0.0.0 --reload --port 9002
Enter fullscreen mode Exit fullscreen mode

Then, open your browser and navigate to:

📄 Swagger UI: http://localhost:9002/docs

You’ll see an auto-generated Swagger UI with:

  • ✅ All your defined endpoints
  • 🧩 Parameter descriptions
  • 📦 Data models for request/response
  • 🧪 Interactive testing interface

💡 This is one of the best features of FastAPI — instant, interactive API docs powered by your Python code and type hints!


🧩 Wrap-Up

In real-world applications, API routes almost always require a mix of:

  • Path parameters for routing (e.g., user ID)
  • Query parameters for optional behavior (e.g., notify=true)
  • Body data for resource creation or updates (e.g., profile info)

And now, you know how to combine and validate all three like a pro. 💪


🙏 Credits

Huge thanks to the FastAPI Official Documentation by Sebastián Ramírez (@tiangolo) — the best place to learn and explore everything about FastAPI.


👨‍💻 About Me

Hey there! I’m Utkarsh Rastogi, an AWS Community Builder and passionate cloud-native enthusiast who loves building scalable backend systems and sharing knowledge with the community.

🔗 Connect with me: Utkarsh Rastogi


💬 Share Your Thoughts – I'd Love Your Feedback!

If you enjoyed today's post or learned something new, I'd truly appreciate it if you leave a comment or share your thoughts 👇

Your feedback, questions, or even a quick “🔥 Loved this!” keeps me motivated to continue this journey and share more in the upcoming #FastAPIDaily posts.

What did you find most helpful?

Anything you'd like explained in the next part?

Suggestions for improvement? I’m all ears! 🙌

Let’s grow and learn together — one FastAPI day at a time 🚀


Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.

👋 Kindness is contagious

Explore this practical breakdown on DEV’s open platform, where developers from every background come together to push boundaries. No matter your experience, your viewpoint enriches the conversation.

Dropping a simple “thank you” or question in the comments goes a long way in supporting authors—your feedback helps ideas evolve.

At DEV, shared discovery drives progress and builds lasting bonds. If this post resonated, a quick nod of appreciation can make all the difference.

Okay