Bird
Raised Fist0
Rest APIprogramming~5 mins

Why flexible querying empowers clients in Rest API - Performance Analysis

Choose your learning style10 modes available
Time Complexity: Why flexible querying empowers clients
O(n log n)
Understanding Time Complexity

When clients can ask for exactly the data they want, the server must handle different query options. This affects how long the server takes to respond.

We want to understand how the time to answer grows as clients ask for more or different data.

Scenario Under Consideration

Analyze the time complexity of the following flexible query handler.

GET /items?fields=name,price&filter=price>100&sort=price

// Server-side pseudo-code
function handleQuery(request) {
  let data = database.getAllItems();
  if (request.filter) {
    data = data.filter(item => applyFilter(item, request.filter));
  }
  if (request.sort) {
    data = data.sort((a, b) => compare(a, b, request.sort));
  }
  if (request.fields) {
    data = data.map(item => pickFields(item, request.fields));
  }
  return data;
}

This code gets all items, then filters, sorts, and selects fields based on client query.

Identify Repeating Operations

Look at the parts that repeat over the data:

  • Primary operation: Filtering and mapping over all items.
  • How many times: Each item is checked once for filtering, once for mapping fields, and sorting compares items multiple times.
How Execution Grows With Input

As the number of items grows, the work grows too:

Input Size (n)Approx. Operations
10About 10 filter checks, 10 map operations, and a few sorts
100About 100 filter checks, 100 map operations, and more sorting comparisons
1000About 1000 filter checks, 1000 map operations, and many sorting comparisons

Pattern observation: The work grows roughly in proportion to the number of items, with sorting adding extra comparisons.

Final Time Complexity

Time Complexity: O(n log n)

This means the time grows a bit faster than the number of items because sorting takes extra steps, but filtering and selecting fields grow directly with items.

Common Mistake

[X] Wrong: "Filtering and selecting fields make the query time constant because they are simple."

[OK] Correct: Even simple checks happen for every item, so the time grows as the list grows, not fixed.

Interview Connect

Understanding how flexible queries affect time helps you explain real API performance. It shows you can think about how code handles different client needs efficiently.

Self-Check

"What if the server used a database query to filter and sort instead of filtering and sorting in code? How would the time complexity change?"

Practice

(1/5)
1. Why does flexible querying empower clients in a REST API?
easy
A. It makes the server slower by processing more data.
B. It forces clients to download all data regardless of need.
C. It allows clients to request only the data they need, reducing data transfer.
D. It disables filtering and sorting options for clients.

Solution

  1. Step 1: Understand flexible querying purpose

    Flexible querying lets clients specify exactly what data they want.
  2. Step 2: Identify benefit to clients

    This reduces unnecessary data transfer and speeds up responses.
  3. Final Answer:

    It allows clients to request only the data they need, reducing data transfer. -> Option C
  4. Quick Check:

    Flexible querying = request needed data only [OK]
Hint: Flexible querying means ask only for needed data [OK]
Common Mistakes:
  • Thinking flexible querying sends all data always
  • Believing it slows down the server
  • Confusing filtering with disabling options
2. Which of the following is the correct way to request only the 'name' and 'email' fields using query parameters?
easy
A. /users?fields=name,email
B. /users?filter=name,email
C. /users?sort=name,email
D. /users?select=name,email

Solution

  1. Step 1: Identify query parameter for selecting fields

    The 'fields' parameter is used to specify which fields to return.
  2. Step 2: Match correct syntax

    Using 'fields=name,email' correctly requests only those fields.
  3. Final Answer:

    /users?fields=name,email -> Option A
  4. Quick Check:

    fields param selects fields [OK]
Hint: Use 'fields' param to pick specific data fields [OK]
Common Mistakes:
  • Using 'filter' to select fields instead of filter data
  • Using 'sort' to select fields
  • Using 'select' which is not standard here
3. Given the API endpoint /products?filter=price>20&sort=price, what is the expected behavior?
medium
A. Return products with price greater than 20, sorted by price ascending.
B. Return all products ignoring the filter and sort parameters.
C. Return products with price less than 20, sorted by price descending.
D. Cause a syntax error due to invalid query format.

Solution

  1. Step 1: Analyze the filter parameter

    The filter 'price>20' means select products priced above 20.
  2. Step 2: Analyze the sort parameter

    The sort 'price' means sort results by price in ascending order by default.
  3. Final Answer:

    Return products with price greater than 20, sorted by price ascending. -> Option A
  4. Quick Check:

    filter price>20 + sort price ascending = Return products with price greater than 20, sorted by price ascending. [OK]
Hint: Filter narrows data; sort orders it [OK]
Common Mistakes:
  • Confusing greater than with less than
  • Assuming sort defaults to descending
  • Thinking query causes syntax error
4. A client sends a request /orders?filter=status=shipped&fields=id,total but receives all fields in the response. What is the likely issue?
medium
A. The filter syntax is incorrect and causes the server to ignore parameters.
B. The 'status=shipped' filter is invalid and returns all data.
C. The client must use 'select' instead of 'fields' to limit fields.
D. The server does not support the 'fields' parameter.

Solution

  1. Step 1: Check server support for 'fields'

    If the server ignores 'fields', it returns all fields regardless of query.
  2. Step 2: Validate filter syntax

    The filter syntax 'status=shipped' is correct and should work if supported.
  3. Final Answer:

    The server does not support the 'fields' parameter. -> Option D
  4. Quick Check:

    Unsupported 'fields' param = all fields returned [OK]
Hint: If fields param ignored, server likely lacks support [OK]
Common Mistakes:
  • Assuming filter syntax error causes ignoring fields
  • Thinking 'select' is required instead of 'fields'
  • Believing invalid filter returns all data
5. You want to build a REST API endpoint that lets clients filter products by category, sort by price descending, and select only 'id', 'name', and 'price' fields. Which query string correctly enables this flexible querying?
hard
A. /products?filter=category=electronics&sort=price_desc&fields=id|name|price
B. /products?filter=category=electronics&sort=-price&fields=id,name,price
C. /products?category=electronics&order=desc_price&select=id,name,price
D. /products?filter=category:electronics&sort=price-desc&fields=id;name;price

Solution

  1. Step 1: Identify correct filter syntax

    Filter uses 'filter=category=electronics' to select category.
  2. Step 2: Identify correct sort syntax

    Sort '-price' means descending by price.
  3. Step 3: Identify correct fields syntax

    Fields are comma-separated: 'fields=id,name,price'.
  4. Final Answer:

    /products?filter=category=electronics&sort=-price&fields=id,name,price -> Option B
  5. Quick Check:

    filter + sort desc + fields comma = /products?filter=category=electronics&sort=-price&fields=id,name,price [OK]
Hint: Use filter=, sort=- for descending, fields=comma list [OK]
Common Mistakes:
  • Using wrong separators like ; or |
  • Incorrect sort syntax like 'price-desc' or 'price_desc'
  • Using 'select' instead of 'fields'
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard