📖 Scenario: You are building a simple REST API that returns a list of products. Users want to get the products sorted by price or name.
🎯 Goal: Create a REST API endpoint that returns a list of products sorted by a query parameter called sort. The sort parameter can be either price or name. If no sort parameter is given, return the products unsorted.
📋 What You'll Learn
Create a list of products with exact entries
Add a variable to read the sort parameter
Sort the products list by the sort parameter if it is price or name
Return the sorted or unsorted list as JSON
💡 Why This Matters
🌍 Real World
Sorting data by user preference is common in online stores and APIs to improve user experience.
💼 Career
Understanding how to handle query parameters and sort data is essential for backend developers working with REST APIs.
Progress0 / 4 steps
1
DATA SETUP: Create the products list
Create a list called products with these exact dictionaries: {'name': 'Apple', 'price': 5}, {'name': 'Banana', 'price': 2}, {'name': 'Cherry', 'price': 7}
Rest API
Hint
Use a list of dictionaries with the exact keys and values.
2
CONFIGURATION: Read the sort parameter
Create a variable called sort_param that reads the sort query parameter from request.args.get('sort')
Rest API
Hint
Use request.args.get('sort') to get the query parameter.
3
CORE LOGIC: Sort the products list by the sort parameter
If sort_param is 'price', sort products by the 'price' key. If sort_param is 'name', sort products by the 'name' key. Use the sort() method with a key argument.
Rest API
Hint
Use products.sort(key=lambda product: product['price']) to sort by price.
4
OUTPUT: Return the sorted or unsorted products as JSON
Use print(products) to display the final products list.
Rest API
Hint
Use print(products) to show the list.
Practice
(1/5)
1. What does the sort parameter do in a REST API request?
easy
A. It filters data based on a condition.
B. It controls the order in which data is returned.
C. It limits the number of results returned.
D. It changes the data format to XML.
Solution
Step 1: Understand the purpose of the sort parameter
The sort parameter is used to arrange the returned data in a specific order.
Step 2: Differentiate from other parameters
Filtering limits data, limiting controls count, and format changes output type, but sorting changes order.
Final Answer:
It controls the order in which data is returned. -> Option B
Quick Check:
Sort parameter = controls order [OK]
Hint: Sort means order, not filter or limit [OK]
Common Mistakes:
Confusing sort with filter
Thinking sort limits results
Assuming sort changes data format
2. Which of the following is the correct way to sort results by the field price in descending order using the sort parameter?
easy
A. sort=desc(price)
B. sort=price-
C. sort=-price
D. sort=price_desc
Solution
Step 1: Identify descending order syntax
In REST APIs, prefixing the field with a minus sign - sorts in descending order.
Step 2: Match the correct syntax
Only sort=-price correctly uses the minus prefix before the field name.
Final Answer:
sort=-price -> Option C
Quick Check:
Minus before field = descending sort [OK]
Hint: Use '-' before field for descending sort [OK]
Common Mistakes:
Placing '-' after the field name
Using function-like syntax incorrectly
Appending '_desc' instead of '-' prefix
3. Given the API request /products?sort=-rating, what will be the order of the returned products?
medium
A. Products sorted by rating from highest to lowest.
B. Products sorted alphabetically by name.
C. Products sorted by rating from lowest to highest.
D. Products sorted by price from lowest to highest.
Solution
Step 1: Analyze the sort parameter
The parameter sort=-rating means sort by the field rating in descending order.
Step 2: Determine the order of sorting
Descending order means highest values first, so products with highest rating come first.
Final Answer:
Products sorted by rating from highest to lowest. -> Option A
Quick Check:
Minus prefix = descending order [OK]
Hint: Minus means descending, so highest values first [OK]
Common Mistakes:
Assuming minus means ascending
Confusing rating with price or name
Ignoring the minus sign
4. You wrote the API request /users?sort=name- to sort users by name descending, but it returns an error. What is the problem?
medium
A. The minus sign should be before the field name, not after.
B. The field name name is invalid for sorting.
C. The sort parameter cannot be used with strings.
D. You need to use order=name_desc instead.
Solution
Step 1: Check the position of the minus sign
The correct syntax places the minus sign before the field name to indicate descending order.
Step 2: Identify the error cause
Using name- places the minus after the field, which is invalid and causes an error.
Final Answer:
The minus sign should be before the field name, not after. -> Option A
Quick Check:
Minus must prefix field for descending [OK]
Hint: Minus after field causes error; put it before [OK]
Common Mistakes:
Placing minus after field name
Assuming sort can't be used on strings
Using wrong parameter like 'order'
5. You want to get a list of blog posts sorted first by date descending, then by title ascending. Which sort parameter should you use?
hard
A. sort=-title,date
B. sort=date,-title
C. sort=title,-date
D. sort=-date,title
Solution
Step 1: Understand multi-field sorting syntax
Multiple fields are separated by commas; order matters for sorting priority.
Step 2: Apply descending and ascending correctly
Use -date for descending date, and title without minus for ascending title.
Step 3: Combine fields in correct order
First sort by date descending, then by title ascending means sort=-date,title.
Final Answer:
sort=-date,title -> Option D
Quick Check:
Minus before date, comma, then title ascending [OK]
Hint: List fields comma-separated; minus means descending [OK]
Common Mistakes:
Reversing field order
Putting minus on ascending field
Using wrong separators like semicolon
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.