📖 Scenario: You are building a simple FastAPI app that accepts a number from users. You want to make sure the number is within a certain range before processing it.
🎯 Goal: Create a FastAPI endpoint that accepts a query parameter value which must be a number greater than 10 and less than or equal to 100. Use FastAPI's numeric validation features to enforce these rules.
📋 What You'll Learn
Create a FastAPI app instance named app
Define a GET endpoint at path /check-number
Add a query parameter value of type int
Use FastAPI's Query with gt=10 and le=100 to validate value
Return a JSON response with the key value and the validated number
💡 Why This Matters
🌍 Real World
Validating numeric inputs is common in web APIs to ensure data integrity and prevent invalid data from causing errors or security issues.
💼 Career
Understanding how to use FastAPI's built-in validation helps backend developers build robust and user-friendly APIs that enforce rules on incoming data.
Progress0 / 4 steps
1
Create FastAPI app instance
Import FastAPI from fastapi and create an app instance called app.
FastAPI
Hint
Use app = FastAPI() to create the app instance.
2
Import Query for validation
Import Query from fastapi to use for numeric validation of query parameters.
FastAPI
Hint
Import Query alongside FastAPI in the same line.
3
Define GET endpoint with validated query parameter
Define a GET endpoint at /check-number with a query parameter value of type int. Use Query with gt=10 and le=100 to validate value.
FastAPI
Hint
Use @app.get('/check-number') decorator and define value with Query(..., gt=10, le=100).
4
Complete the FastAPI app
Ensure the FastAPI app code includes the import statements, app instance, and the GET endpoint with numeric validation as defined.
FastAPI
Hint
Make sure all parts are present and correctly indented.
Practice
(1/5)
1. In FastAPI, which parameter would you use in a Pydantic Field to ensure a number is strictly greater than 10?
easy
A. gt=10
B. lt=10
C. ge=10
D. le=10
Solution
Step 1: Understand the meaning of gt
The gt parameter means "greater than" and excludes the value itself.
Step 2: Match the requirement
Since the question asks for strictly greater than 10, gt=10 is the correct choice.
Final Answer:
gt=10 -> Option A
Quick Check:
Strictly greater than 10 = gt=10 [OK]
Hint: Use gt for strictly greater than, ge for greater or equal [OK]
Common Mistakes:
Confusing gt with ge and using ge=10 instead
Using lt or le which mean less than
Thinking gt includes the number 10
2. Which of the following is the correct syntax to validate a number field in FastAPI to be less than or equal to 100 using Pydantic?
easy
A. Field(ge=100)
B. Field(lt=100)
C. Field(le=100)
D. Field(gt=100)
Solution
Step 1: Identify the parameter for less than or equal
The parameter le stands for "less than or equal to".
Step 2: Check the syntax
The correct syntax is Field(le=100) to enforce the value to be at most 100.
Final Answer:
Field(le=100) -> Option C
Quick Check:
Less than or equal to 100 = le=100 [OK]
Hint: Use le for less or equal, lt for strictly less [OK]
Common Mistakes:
Using lt=100 which excludes 100
Using ge or gt which are for greater values
Writing Field(le100) without equals sign
3. Given this FastAPI model snippet:
from pydantic import BaseModel, Field
class Item(BaseModel):
price: float = Field(gt=0, le=100)
What happens if you send a request with price=0?
medium
A. Accepted because price is a float
B. Accepted because price is less than or equal to 100
C. Validation error because price must be less than or equal to 0
D. Validation error because price must be greater than 0
Solution
Step 1: Analyze the validation rules
The field has gt=0 (greater than 0) and le=100 (less or equal to 100).
Step 2: Check the input value
Input price is 0, which is not greater than 0, so it violates the gt=0 rule.
Final Answer:
Validation error because price must be greater than 0 -> Option D
Quick Check:
Price 0 fails gt=0 validation [OK]
Hint: gt excludes the number itself; 0 is not > 0 [OK]
Common Mistakes:
Thinking 0 passes because it is less than 100
Confusing gt with ge and allowing 0
Ignoring validation errors in FastAPI
4. You wrote this FastAPI model:
from pydantic import BaseModel, Field
class User(BaseModel):
age: int = Field(ge=18, lt=65)
But when you send age=65, it passes validation. Why?
medium
A. Because lt=65 means less than 65, so 65 should fail but it passes because you used le=65 instead of lt=65
B. Because lt=65 means less than 65, so 65 should fail but it passes because you used ge incorrectly
C. Because lt=65 means less than 65, so 65 should fail but it passes because the validation is not enforced on int
D. Because lt=65 means age must be less than 65, so 65 should fail but it passes due to a bug
Solution
Step 1: Understand the meaning of lt and le
lt=65 means strictly less than 65, so 65 should fail validation.
Step 2: Identify the cause of passing validation
If 65 passes, likely the code uses le=65 (less or equal) instead of lt=65, allowing 65.
Final Answer:
Because lt=65 means less than 65, so 65 should fail but it passes because you used le=65 instead of lt=65 -> Option A
Quick Check:
lt excludes value; le includes it [OK]
Hint: lt excludes value; le includes it. Check which you used [OK]
Common Mistakes:
Confusing lt and le parameters
Assuming validation is not enforced on integers
Thinking ge affects upper bound
5. You want to create a FastAPI model for a product rating that must be between 1 and 5 inclusive. Which is the correct way to define this field using Pydantic validation?
hard
A. rating: int = Field(gt=1, lt=5)
B. rating: int = Field(ge=1, le=5)
C. rating: int = Field(gt=1, le=5)
D. rating: int = Field(ge=1, lt=5)
Solution
Step 1: Understand inclusive range requirements
Inclusive means the value can be equal to the limits, so use ge (greater or equal) and le (less or equal).
Step 2: Match parameters to the range 1 to 5 inclusive
Use ge=1 and le=5 to allow 1 and 5 as valid values.
Final Answer:
rating: int = Field(ge=1, le=5) -> Option B
Quick Check:
Inclusive range uses ge and le [OK]
Hint: Use ge and le for inclusive ranges, gt and lt for exclusive [OK]
Common Mistakes:
Using gt or lt excludes boundary values
Mixing gt with le or ge with lt incorrectly
Forgetting to include both bounds
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.