0
0
FastAPIframework~20 mins

Folder structure patterns in FastAPI - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
FastAPI Folder Structure Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding FastAPI folder structure for scalability
Which folder structure below best supports adding multiple API routers and models in a FastAPI project for better scalability?
A
app/
  main.py
  api/
    v1/
      endpoints.py
      models.py
  core/
    config.py
  utils.py
B
app/
  main.py
  models.py
  routes.py
  utils.py
C
app/
  main.py
  api.py
  models.py
  helpers.py
D
app/
  main.py
  endpoints/
    users.py
    items.py
  models.py
Attempts:
2 left
💡 Hint
Think about how to organize code to easily add new API versions and separate concerns.
component_behavior
intermediate
2:00remaining
Behavior of FastAPI app with nested routers
Given this folder structure and code, what will be the URL path to access the 'get_users' endpoint? Structure: app/ main.py api/ v1/ users.py Code in users.py: from fastapi import APIRouter router = APIRouter(prefix='/users') @router.get('/') async def get_users(): return ['Alice', 'Bob'] Code in main.py: from fastapi import FastAPI from api.v1.users import router as users_router app = FastAPI() app.include_router(users_router, prefix='/v1')
FastAPI
from fastapi import APIRouter
router = APIRouter(prefix='/users')

@router.get('/')
async def get_users():
    return ['Alice', 'Bob']

from fastapi import FastAPI
from api.v1.users import router as users_router
app = FastAPI()
app.include_router(users_router, prefix='/v1')
A/users/
B/v1/users/
C/users/v1/
D/v1/
Attempts:
2 left
💡 Hint
Remember how prefixes combine when including routers.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in FastAPI folder import
In a FastAPI project with this folder structure: app/ main.py api/ __init__.py v1/ __init__.py users.py Which import statement in main.py correctly imports the 'users' router?
Aimport api.v1.users.router
Bfrom api/v1/users import router
Cfrom api.v1.users import router
Dfrom api.v1 import users.router
Attempts:
2 left
💡 Hint
Python imports use dots, not slashes.
🔧 Debug
advanced
2:00remaining
Debugging missing endpoint error in FastAPI project
You have this folder structure: app/ main.py api/ v1/ users.py In users.py: from fastapi import APIRouter router = APIRouter(prefix='/users') @router.get('/users') async def read_users(): return ['user1', 'user2'] In main.py: from fastapi import FastAPI from api.v1 import users app = FastAPI() app.include_router(users.router, prefix='/v1') When you run the app and visit '/v1/users', you get 404 Not Found. What is the most likely cause?
AThe router in users.py has prefix '/users', so the endpoint is at '/v1/users/users' instead of '/v1/users'.
BThe users.py file is missing an __init__.py, so the import fails silently.
CThe endpoint function read_users is missing the @app.get decorator.
DThe include_router call should not have a prefix argument.
Attempts:
2 left
💡 Hint
Check how prefixes combine in routers.
state_output
expert
2:00remaining
Output of FastAPI app with multiple routers and prefixes
Consider this FastAPI app folder structure: app/ main.py api/ v1/ users.py items.py users.py: from fastapi import APIRouter router = APIRouter(prefix='/users') @router.get('/') async def get_users(): return ['user1'] items.py: from fastapi import APIRouter router = APIRouter(prefix='/items') @router.get('/') async def get_items(): return ['item1'] main.py: from fastapi import FastAPI from api.v1.users import router as users_router from api.v1.items import router as items_router app = FastAPI() app.include_router(users_router, prefix='/v1') app.include_router(items_router, prefix='/v1') What will be the JSON response when a client requests GET /v1/items/ ?
FastAPI
from fastapi import APIRouter

# users.py
router = APIRouter(prefix='/users')
@router.get('/')
async def get_users():
    return ['user1']

# items.py
router = APIRouter(prefix='/items')
@router.get('/')
async def get_items():
    return ['item1']

# main.py
from fastapi import FastAPI
from api.v1.users import router as users_router
from api.v1.items import router as items_router
app = FastAPI()
app.include_router(users_router, prefix='/v1')
app.include_router(items_router, prefix='/v1')
A['user1', 'item1']
B['user1']
C404 Not Found error
D['item1']
Attempts:
2 left
💡 Hint
Check how prefixes combine for each router and which endpoint is called.