Query Parameters and String Validations
Part of: FastAPI Basics
Learn advanced query parameter features with validation, constraints, and metadata. Add length limits, regex patterns, and documentation to your query parameters.
What You'll Learn
- Add validation constraints to query parameters
- Use Query() for advanced parameter configuration
- Set minimum and maximum length for string parameters
- Add regex patterns for string validation
- Include parameter documentation and examples
Theory and Concepts
Query Parameters and String Validations
🎯 What You'll Learn
Following the official FastAPI tutorial, you'll learn how to add validation constraints, metadata, and documentation to your query parameters using FastAPI's Query function.
By the end of this lesson, you'll understand how to:
- Add validation constraints to query parameters
- Use Query() for advanced parameter configuration
- Set minimum and maximum length for string parameters
- Add regex patterns for string validation
- Include parameter documentation and examples
🔍 Advanced Query Parameter Features
While basic query parameters work great with default values, FastAPI provides the Query function for advanced features like validation, constraints, and documentation.
Basic Query vs Advanced Query
Basic approach:
[Code Example]
Advanced approach with Query:
[Code Example]
🛠️ The Query Function
The Query function allows you to add metadata and validation constraints to query parameters.
Basic Query Usage
[Code Example]
String Validation Constraints
[Code Example]
Numeric Validation Constraints
[Code Example]
💡 Official Tutorial Examples
Example 1: Basic Query Validation
From the official tutorial:
[Code Example]
Example 2: Required Query Parameters
[Code Example]
Note: When you use Query() without a default, the parameter becomes required.
Example 3: Query with Multiple Constraints
[Code Example]
🎨 Query Parameter Features
Validation Constraints
- min_length: Minimum string length
- max_length: Maximum string length
- regex: Regular expression pattern
- ge: Greater than or equal (numbers)
- le: Less than or equal (numbers)
- gt: Greater than (numbers)
- lt: Less than (numbers)
Metadata and Documentation
- description: Parameter description in docs
- deprecated: Mark parameter as deprecated
- include_in_schema: Include/exclude from OpenAPI schema
- example: Example value for documentation
Example with Full Metadata
[Code Example]
🔄 List Query Parameters
You can also receive multiple values for the same query parameter:
[Code Example]
URL Examples:
- /items/?q=foo&q=bar → q = ["foo", "bar"]
- /items/ → q = None
With Validation
[Code Example]
✨ Best Practices
1. Use Meaningful Constraints
[Code Example]
2. Add Helpful Descriptions
[Code Example]
3. Use Appropriate Defaults
[Code Example]
🚫 Common Beginner Mistakes
Mistake 1: Forgetting to Import Query
[Code Example]
Mistake 2: Mixing Query and Default Syntax
[Code Example]
Mistake 3: Unrealistic Constraints
[Code Example]
🎉 What's Next?
Congratulations! You now understand how to add powerful validation and documentation to your query parameters. This makes your APIs more robust and user-friendly.
You've learned:
- How to use Query() for advanced parameter configuration
- Adding validation constraints (min/max length, numeric ranges)
- Including parameter documentation and examples
- Handling list parameters for multiple values
Coming up next: Path Parameters and Numeric Validations - learning how to add similar validation to path parameters!
📖 Additional Resources
- FastAPI Query Parameters and String Validations
- Pydantic Field Validation
- Regular Expressions in Python
Helpful Hint
Import Query from fastapi and use it like: q: str = Query(None, min_length=3, max_length=50). This adds validation constraints to your query parameters!