Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Using Shared Dependencies in FastAPI
📖 Scenario: You are building a simple web API with FastAPI. You want to reuse a common dependency that provides a database connection object for multiple API endpoints.
🎯 Goal: Create a FastAPI app that uses a shared dependency function to provide a database connection string to two different endpoints.
📋 What You'll Learn
Create a dependency function called get_db that returns the string 'db_connection'.
Create a FastAPI app instance called app.
Create two GET endpoints: /items/ and /users/.
Both endpoints must use the get_db dependency to receive the database connection string.
Each endpoint should return a JSON response with a key db and the value from the dependency.
💡 Why This Matters
🌍 Real World
Shared dependencies in FastAPI help avoid repeating code for common resources like database connections, authentication, or configuration.
💼 Career
Understanding shared dependencies is essential for building scalable and maintainable APIs in professional FastAPI development.
Progress0 / 4 steps
1
Create the shared dependency function
Create a function called get_db that returns the string 'db_connection'.
FastAPI
Hint
Define a simple function named get_db that returns the string 'db_connection'.
2
Create the FastAPI app instance
Import FastAPI from fastapi and create an app instance called app.
FastAPI
Hint
Use from fastapi import FastAPI and then create app = FastAPI().
3
Create the /items/ endpoint using the shared dependency
Create a GET endpoint /items/ using @app.get("/items/"). Add a parameter db that uses Depends(get_db). Return a dictionary with key db and value db.
FastAPI
Hint
Use @app.get("/items/") and a function with parameter db: str = Depends(get_db). Return {"db": db}.
4
Create the /users/ endpoint using the shared dependency
Create a GET endpoint /users/ using @app.get("/users/"). Add a parameter db that uses Depends(get_db). Return a dictionary with key db and value db.
FastAPI
Hint
Repeat the pattern from the previous step for the /users/ endpoint.
Practice
(1/5)
1. What is the main purpose of using Depends() in FastAPI for shared dependencies?
easy
A. To reuse code across multiple routes by declaring common dependencies
B. To create a new route in the application
C. To handle database connections manually
D. To define the response model for an endpoint
Solution
Step 1: Understand the role of Depends()
Depends() is used in FastAPI to declare dependencies that can be shared across multiple routes.
Step 2: Identify the main benefit
Using shared dependencies helps reuse code and keep the app clean and maintainable.
Final Answer:
To reuse code across multiple routes by declaring common dependencies -> Option A
Quick Check:
Shared dependencies = reuse code [OK]
Hint: Depends() means shared code for many routes [OK]
The function common_dep returns the string "shared value". FastAPI injects this into the value parameter via Depends(common_dep).
Step 2: Check the returned JSON
The route returns a dictionary with item_id from the path and value from the dependency. So the output will be {"item_id": 42, "value": "shared value"}.
Final Answer:
{"item_id": 42, "value": "shared value"} -> Option D
Quick Check:
Dependency injects "shared value" [OK]
Hint: Depends injects return value as parameter [OK]
Common Mistakes:
Assuming dependency returns item_id
Expecting error due to missing parameter
Thinking value will be null without explicit call
4. Identify the error in the following FastAPI code using shared dependencies:
A. The function secure_route should not have parameters
B. The dependency function get_token() should return an int
C. Depends() is missing the dependency function inside
D. The route decorator is missing parentheses
Solution
Step 1: Check Depends usage
The parameter token uses Depends() without specifying the dependency function. This is incorrect syntax.
Step 2: Correct usage
Depends must wrap the function providing the dependency, so it should be Depends(get_token).
Final Answer:
Depends() is missing the dependency function inside -> Option C
Quick Check:
Depends() needs function argument [OK]
Hint: Depends() always needs a function inside [OK]
Common Mistakes:
Using Depends() without argument
Expecting Depends() to work without function
Confusing Depends() with decorator syntax
5. You want to share a database session dependency across multiple routes but also ensure it closes after each request. Which approach correctly uses shared dependencies with cleanup in FastAPI?
hard
A. Create the session globally once and reuse it without closing
B. Use a dependency function with yield that creates the session, yields it, then closes it after
C. Pass the session as a normal parameter without Depends()
D. Use Depends() but close the session manually inside each route
Solution
Step 1: Understand dependency cleanup
FastAPI supports dependencies with cleanup by using yield inside the dependency function. This allows setup before yield and cleanup after.
Step 2: Apply to database session
The correct pattern is to create the session, yield it for use in routes, then close it after the request finishes.
Final Answer:
Use a dependency function with yield that creates the session, yields it, then closes it after -> Option B
Quick Check:
Yield in dependency = setup and cleanup [OK]
Hint: Use yield in dependency for setup and cleanup [OK]
Common Mistakes:
Reusing global session without closing
Closing session inside route instead of dependency