FastAPI helps you quickly create web apps that can handle requests and send responses. It makes building APIs simple and fast.
First FastAPI application
from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"message": "Hello World"}
FastAPI() creates the app instance.
@app.get("/") means this function runs when someone visits the home URL with a GET request.
from fastapi import FastAPI app = FastAPI() @app.get("/hello") async def say_hello(): return {"greeting": "Hello FastAPI!"}
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
This is the simplest FastAPI app. When you run it and visit the home page, it sends back a JSON message.
from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"message": "Hello World"}
Run this app with: uvicorn filename:app --reload replacing filename with your Python file name.
Use async def for your route functions to allow FastAPI to handle many requests efficiently.
FastAPI automatically converts your return values to JSON responses.
FastAPI lets you create web apps with just a few lines of code.
Use decorators like @app.get() to define routes.
Your functions return data that FastAPI sends as JSON to users.
Practice
@app.get("/") decorator do in a FastAPI application?Solution
Step 1: Understand the decorator role
The@app.get("/")decorator tells FastAPI to listen for GET requests at the root URL path.Step 2: Connect decorator to route handling
When a user visits the root URL with a GET request, the function below this decorator runs and returns a response.Final Answer:
It defines a route that responds to HTTP GET requests at the root URL. -> Option CQuick Check:
Route decorator = defines GET route [OK]
- Thinking @app.get starts the server
- Confusing route decorators with imports
- Assuming it creates database connections
Solution
Step 1: Recall FastAPI app creation syntax
The FastAPI app is created by calling the FastAPI class with parentheses:FastAPI().Step 2: Check each option for correctness
app = FastAPI() correctly callsFastAPI(). app = fastapi() uses lowercase which is incorrect. app = FastAPI misses parentheses, so it is a class reference, not an instance. app = FastAPI.create() uses a non-existent method.Final Answer:
app = FastAPI() -> Option BQuick Check:
FastAPI instance = FastAPI() [OK]
- Omitting parentheses when creating app
- Using lowercase 'fastapi' instead of 'FastAPI'
- Trying to call a non-existent create() method
/hello?
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
def say_hello():
return {"message": "Hello, FastAPI!"}Solution
Step 1: Identify route and return value
The route/hellois defined with a GET method. The function returns a dictionary with key "message" and value "Hello, FastAPI!".Step 2: Understand FastAPI response format
FastAPI automatically converts returned dictionaries to JSON responses. So the response will be JSON with the same key-value pair.Final Answer:
{"message": "Hello, FastAPI!"} -> Option AQuick Check:
Returned dict = JSON response [OK]
- Expecting plain string instead of JSON
- Confusing function name as JSON key
- Assuming route does not exist causing 404
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
def read_items():
return {"items": [1, 2, 3]}Solution
Step 1: Check Python syntax indentation
Python requires the return statement inside the function to be indented. Here,returnis not indented, causing a syntax error.Step 2: Verify other parts
The route path '/items' is valid, returning lists is supported, and the import is correct.Final Answer:
The function read_items is missing an indentation for the return statement. -> Option DQuick Check:
Python indentation error = missing indent [OK]
- Ignoring Python indentation rules
- Thinking route path must be singular
- Believing FastAPI can't return lists
/greet/Alice. Which code correctly implements this?Solution
Step 1: Use path parameter in route
The route must include{name}in the path to capture the user name from the URL.Step 2: Define function with typed parameter and return greeting
The function should acceptname: strand return a dictionary with a greeting using an f-string to insert the name.Step 3: Check other options for errors
from fastapi import FastAPI app = FastAPI() @app.get("/greet") def greet(name: str): return {"greeting": f"Hello, {name}!"} misses the path parameter in the route. from fastapi import FastAPI app = FastAPI() @app.get("/greet/{name}") def greet(): return {"greeting": "Hello!"} does not accept the name parameter. from fastapi import FastAPI app = FastAPI() @app.get("/greet/{name}") def greet(name): return {"greeting": "Hello, name!"} does not use f-string, so it returns the literal text "name".Final Answer:
Uses path parameter and returns personalized greeting. -> Option AQuick Check:
Path param + f-string = personalized greeting [OK]
- Not including path parameter in route string
- Forgetting to type the function parameter
- Returning literal string instead of formatted string
Ready to prove it?
Pass the test and this pattern moves unknown
