📖 Scenario: You are building a simple REST API for a bookstore. Customers want to search for books by different filters like author and genre.
🎯 Goal: Create a REST API endpoint that accepts multiple filter parameters and returns the matching books.
📋 What You'll Learn
Create a list of books with title, author, and genre
Add variables to hold filter parameters for author and genre
Filter the list of books based on the given author and genre
Return the filtered list as JSON output
💡 Why This Matters
🌍 Real World
Filtering data by multiple parameters is common in search features on websites and apps, like searching for products by brand and category.
💼 Career
Understanding how to handle multiple filter parameters is important for backend developers building APIs that serve filtered data to frontend applications.
Progress0 / 4 steps
1
Create the initial data set
Create a list called books with these exact dictionaries: {'title': 'The Hobbit', 'author': 'Tolkien', 'genre': 'Fantasy'}, {'title': '1984', 'author': 'Orwell', 'genre': 'Dystopian'}, and {'title': 'The Silmarillion', 'author': 'Tolkien', 'genre': 'Fantasy'}.
Rest API
Hint
Use a list of dictionaries to store the books with their details.
2
Add filter parameters
Create two variables called filter_author and filter_genre. Set filter_author to 'Tolkien' and filter_genre to 'Fantasy'.
Rest API
Hint
Set the filter variables to the exact strings given.
3
Filter the books list
Create a new list called filtered_books that contains only the books where author equals filter_author and genre equals filter_genre. Use a list comprehension.
Rest API
Hint
Use a list comprehension with an if condition checking both author and genre.
4
Print the filtered books
Print the filtered_books list.
Rest API
Hint
Use print(filtered_books) to show the filtered list.
Practice
(1/5)
1. What does adding multiple filter parameters in a REST API URL do? example.com/api/items?color=red&size=medium
easy
A. Returns items that match all filter conditions (color red AND size medium).
B. Returns items that match any one of the filter conditions (color red OR size medium).
C. Returns all items ignoring the filters.
D. Returns an error because multiple filters are not allowed.
Solution
Step 1: Understand multiple filters in URL
Multiple filters joined by & mean the server should apply all conditions together.
Step 2: Interpret the example URL
The URL ?color=red&size=medium means items must be red AND medium size.
Final Answer:
Returns items that match all filter conditions (color red AND size medium). -> Option A
Quick Check:
Multiple filters = AND condition [OK]
Hint: Multiple filters joined by & mean AND condition [OK]
Common Mistakes:
Thinking filters work as OR instead of AND
Assuming filters are ignored
Believing multiple filters cause errors
2. Which of the following is the correct syntax to filter items by category=books and author=doe in a REST API URL?
easy
A. example.com/api/items?category=books;author=doe
B. example.com/api/items?category=books&author=doe
C. example.com/api/items?category=books|author=doe
D. example.com/api/items?category=books author=doe
Solution
Step 1: Identify correct separator for multiple filters
In URLs, multiple query parameters are separated by &.
Step 2: Check each option
Only example.com/api/items?category=books&author=doe uses & correctly between filters.
Final Answer:
example.com/api/items?category=books&author=doe -> Option B
Quick Check:
Use & to separate filters [OK]
Hint: Use & to separate multiple filters in URL [OK]
Common Mistakes:
Using | or ; instead of &
Leaving spaces between parameters
Not using any separator
3. Given the REST API call: GET /products?color=blue&size=large&in_stock=true What kind of products will the server return?
medium
A. Products that are blue AND large AND in stock.
B. Products that are blue OR large OR in stock.
C. Products that are either blue or large, ignoring stock status.
D. All products regardless of filters.
Solution
Step 1: Understand multiple filters joined by &
Filters combined with & mean all conditions must be true together.
Step 2: Apply to given filters
Only products that are blue, large, and in stock will be returned.
Final Answer:
Products that are blue AND large AND in stock. -> Option A
Quick Check:
Multiple filters = AND condition [OK]
Hint: Multiple filters joined by & mean AND condition [OK]
Common Mistakes:
Thinking filters combine with OR
Ignoring some filters
Assuming filters are optional
4. You wrote this URL to filter users by age=30 and active=true: example.com/api/users?age=30&active=true& But the server returns an error. What is the likely problem?
medium
A. The URL should use commas instead of &.
B. The server does not support filtering by age.
C. The filter values must be in quotes.
D. The trailing & at the end causes a syntax error.
Solution
Step 1: Check URL syntax for filters
A trailing & at the end of query parameters is invalid syntax.
Step 2: Understand server error cause
The server likely rejects the URL because of the extra & with no following parameter.
Final Answer:
The trailing & at the end causes a syntax error. -> Option D
Quick Check:
Trailing & causes error [OK]
Hint: Avoid trailing & in URL query parameters [OK]
Common Mistakes:
Leaving trailing & at end of URL
Using commas instead of &
Assuming quotes are needed around values
5. You want to get all orders from the REST API where status is shipped and total is greater than 100. The API supports filtering by multiple parameters but only exact matches. How can you combine filters to get orders with status=shipped and total>100?
hard
A. Use ?status=shipped&total=100 and filter results manually.
B. Use ?status=shipped&total=gt:100 to specify greater than.
C. Use ?status=shipped&total_min=101 if the API supports range filters.
D. Use ?status=shipped&total>100 directly in URL.
Solution
Step 1: Understand API filter limitations
The API only supports exact matches, so direct > operator is not allowed.
Step 2: Use API-supported range filter parameter
Many APIs use parameters like total_min to filter values greater than a number.
Step 3: Combine filters correctly
Using ?status=shipped&total_min=101 filters orders with status shipped and total greater than 100.
Final Answer:
Use ?status=shipped&total_min=101 if the API supports range filters. -> Option C
Quick Check:
Use API range params for > filters [OK]
Hint: Use API-specific range filters like total_min for > conditions [OK]
Common Mistakes:
Trying to use > directly in URL
Assuming all APIs support gt: syntax
Filtering manually after fetching all data
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.