Bird
Raised Fist0
Rest APIprogramming~5 mins

Why advanced patterns solve real problems in Rest API - Performance Analysis

Choose your learning style10 modes available
Time Complexity: Why advanced patterns solve real problems
O(n)
Understanding Time Complexity

When using advanced patterns in REST APIs, it is important to understand how they affect the time it takes for the API to respond.

We want to know how the work grows as the API handles more data or requests.

Scenario Under Consideration

Analyze the time complexity of the following REST API handler using advanced patterns.

async function getUserPosts(userId) {
  const user = await db.findUserById(userId);
  const posts = await db.findPostsByUser(userId);
  const comments = await Promise.all(posts.map(post => db.findCommentsByPost(post.id)));
  return { user, posts, comments };
}

This code fetches a user, their posts, and comments on each post using asynchronous calls and mapping.

Identify Repeating Operations

Look for repeated actions that take time.

  • Primary operation: Fetching comments for each post inside a map.
  • How many times: Once for each post the user has.
How Execution Grows With Input

As the number of posts grows, the number of comment fetches grows the same way.

Input Size (posts)Approx. Operations
1010 comment fetches
100100 comment fetches
10001000 comment fetches

Pattern observation: The work grows directly with the number of posts.

Final Time Complexity

Time Complexity: O(n)

This means the time to complete grows in a straight line as the number of posts increases.

Common Mistake

[X] Wrong: "Using advanced patterns always makes the API slower because it adds more steps."

[OK] Correct: Advanced patterns often organize work better, making it easier to handle more data efficiently, not necessarily slower.

Interview Connect

Understanding how advanced patterns affect time helps you explain your design choices clearly and confidently in real projects.

Self-Check

"What if we fetched comments in batches instead of one by one? How would the time complexity change?"

Practice

(1/5)
1. Why do advanced REST API patterns like pagination and consistent error handling matter in real-world applications?
easy
A. They slow down the API response time significantly.
B. They add unnecessary complexity to simple APIs.
C. They make APIs easier to use, maintain, and scale.
D. They are only useful for small projects.

Solution

  1. Step 1: Understand the purpose of advanced patterns

    Advanced patterns like pagination and consistent error handling help organize API responses and interactions.
  2. Step 2: Connect patterns to real-world benefits

    These patterns improve usability, maintainability, and scalability of APIs in practical applications.
  3. Final Answer:

    They make APIs easier to use, maintain, and scale. -> Option C
  4. Quick Check:

    Advanced patterns improve API usability = They make APIs easier to use, maintain, and scale. [OK]
Hint: Think about how patterns help users and developers [OK]
Common Mistakes:
  • Assuming patterns only add complexity
  • Believing patterns slow down APIs
  • Thinking patterns are for small projects only
2. Which of the following is the correct way to indicate pagination in a REST API response header?
easy
A. X-Pagination-Page: 1
B. Pagination-Page: 1
C. Page-Number: 1
D. Page: 1

Solution

  1. Step 1: Recall standard pagination header naming

    Common practice uses custom headers starting with 'X-' like 'X-Pagination-Page' to indicate page number.
  2. Step 2: Compare options to standard naming

    Only 'X-Pagination-Page: 1' follows the common convention for pagination headers.
  3. Final Answer:

    X-Pagination-Page: 1 -> Option A
  4. Quick Check:

    Standard pagination header = X-Pagination-Page: 1 [OK]
Hint: Look for headers starting with 'X-' for custom metadata [OK]
Common Mistakes:
  • Using generic header names without 'X-' prefix
  • Confusing query parameters with headers
  • Assuming 'Page' alone is a header
3. Given this REST API response snippet for pagination:
{
  "data": ["item1", "item2"],
  "page": 2,
  "per_page": 2,
  "total": 5
}

What is the total number of pages available?
medium
A. 2
B. 7
C. 5
D. 3

Solution

  1. Step 1: Identify total items and items per page

    Total items = 5, items per page = 2.
  2. Step 2: Calculate total pages needed

    Divide total by per_page: 5 / 2 = 2.5, round up to 3 pages.
  3. Final Answer:

    3 -> Option D
  4. Quick Check:

    5 items with 2 per page = 3 pages [OK]
Hint: Divide total items by per_page and round up [OK]
Common Mistakes:
  • Using integer division without rounding up
  • Confusing current page with total pages
  • Ignoring total count and using data length
4. You have this error response from a REST API:
{
  "error": "Invalid ID",
  "code": 400
}

But your client expects error details under the key "message" instead of "error". How can you fix this to follow consistent error patterns?
medium
A. Change the API to return {"message": "Invalid ID", "code": 400}
B. Change the client to look for "error" key instead of "message"
C. Ignore the error and retry the request
D. Remove the "code" key from the response

Solution

  1. Step 1: Identify the inconsistency

    The API returns error details under "error" but client expects "message" key.
  2. Step 2: Fix the API response to match client expectation

    Change the API to use "message" key for error details to keep consistent error format.
  3. Final Answer:

    Change the API to return {"message": "Invalid ID", "code": 400} -> Option A
  4. Quick Check:

    Consistent error keys = Use "message" key in API response [OK]
Hint: Match error keys between API and client [OK]
Common Mistakes:
  • Ignoring client expectations
  • Retrying without fixing error format
  • Removing important error code info
5. You want to design a REST API that returns a list of users with optional filtering by age and supports pagination. Which advanced pattern combination best solves this real problem?
hard
A. Use POST method to send filters in the body and ignore pagination.
B. Use query parameters for filters and pagination, and return consistent error messages.
C. Return all users in one response without filters or pagination.
D. Send filters as headers and paginate by splitting responses manually.

Solution

  1. Step 1: Identify best practices for filtering and pagination

    Filters are commonly passed as query parameters; pagination also uses query parameters for page and size.
  2. Step 2: Combine with consistent error handling

    Returning consistent error messages helps clients handle issues gracefully.
  3. Final Answer:

    Use query parameters for filters and pagination, and return consistent error messages. -> Option B
  4. Quick Check:

    Filters + pagination via query params + consistent errors = Use query parameters for filters and pagination, and return consistent error messages. [OK]
Hint: Use query params for filters and pagination [OK]
Common Mistakes:
  • Ignoring pagination causing large responses
  • Using POST instead of GET for filtering
  • Sending filters in headers which is non-standard
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