Bird
Raised Fist0
Rest APIprogramming~30 mins

API analytics and usage metrics in Rest API - Mini Project: Build & Apply

Choose your learning style10 modes available
API Analytics and Usage Metrics
📖 Scenario: You work for a company that provides a public API. Your job is to analyze the usage data to understand how many times each API endpoint was called and by which users.
🎯 Goal: Build a simple program that processes API call logs stored in a dictionary, counts the number of calls per endpoint, and shows usage metrics per user.
📋 What You'll Learn
Create a dictionary with API call logs
Add a variable to hold a threshold for minimum calls
Use a loop to count calls per endpoint and per user
Print the final usage metrics
💡 Why This Matters
🌍 Real World
API providers often need to analyze usage data to improve performance and detect abuse.
💼 Career
Understanding API analytics is important for backend developers, data analysts, and product managers.
Progress0 / 4 steps
1
Create API call logs dictionary
Create a dictionary called api_calls with these exact entries: 'user1': ['/login', '/data', '/logout'], 'user2': ['/login', '/data', '/data'], 'user3': ['/login', '/logout']
Rest API
Hint

Use curly braces to create a dictionary. Keys are user names, values are lists of API endpoints called.

2
Add minimum call threshold
Create a variable called min_calls and set it to 2 to filter endpoints with at least 2 calls
Rest API
Hint

Just create a variable and assign the number 2 to it.

3
Count calls per endpoint and per user
Create two empty dictionaries called endpoint_counts and user_counts. Then use a for loop with variables user and calls to iterate over api_calls.items(). Inside, use another for loop with variable endpoint to iterate over calls. Increment counts in both dictionaries accordingly.
Rest API
Hint

Use dict.get(key, 0) to safely increment counts. Remember to count total calls per user and per endpoint.

4
Print usage metrics filtered by threshold
Use a for loop with variables endpoint and count to iterate over endpoint_counts.items(). Inside the loop, use an if statement to check if count is greater than or equal to min_calls. If yes, print the message f"Endpoint {endpoint} was called {count} times". Then print the user_counts dictionary.
Rest API
Hint

Use a loop and an if condition to filter and print. Then print the user_counts dictionary as is.

Practice

(1/5)
1. What is the main purpose of API analytics in REST APIs?
easy
A. To generate API documentation
B. To create new API endpoints automatically
C. To encrypt API data during transmission
D. To track how the API is used and find issues

Solution

  1. Step 1: Understand API analytics role

    API analytics collect data on API usage and performance.
  2. Step 2: Identify main goal

    The main goal is to track usage and detect problems.
  3. Final Answer:

    To track how the API is used and find issues -> Option D
  4. Quick Check:

    API analytics = usage tracking [OK]
Hint: API analytics = usage + problem detection [OK]
Common Mistakes:
  • Confusing analytics with encryption
  • Thinking analytics create endpoints
  • Assuming analytics generate docs
2. Which of the following is the correct way to request API usage metrics grouped by date using query parameters?
easy
A. POST /metrics group_by=date
B. GET /metrics/date
C. GET /metrics?group_by=date
D. PUT /metrics?date=group_by

Solution

  1. Step 1: Identify HTTP method for data retrieval

    GET is used to request data without changing it.
  2. Step 2: Check query parameter syntax

    Query parameters follow ?key=value format, so ?group_by=date is correct.
  3. Final Answer:

    GET /metrics?group_by=date -> Option C
  4. Quick Check:

    GET + ?group_by=date = correct syntax [OK]
Hint: Use GET with ?key=value for queries [OK]
Common Mistakes:
  • Using POST instead of GET for data retrieval
  • Incorrect query parameter placement
  • Confusing URL path with query parameters
3. Given this API call: GET /api/usage?start=2024-01-01&end=2024-01-07&group_by=endpoint, what is the expected output?
medium
A. Usage data grouped by API endpoint from Jan 1 to Jan 7, 2024
B. Error because 'group_by' is not a valid parameter
C. Data for all endpoints without grouping
D. Usage data only for Jan 7, 2024

Solution

  1. Step 1: Analyze query parameters

    start and end define the date range; group_by=endpoint means grouping results by endpoint.
  2. Step 2: Determine output meaning

    The API returns usage data grouped by endpoint for the specified date range.
  3. Final Answer:

    Usage data grouped by API endpoint from Jan 1 to Jan 7, 2024 -> Option A
  4. Quick Check:

    start/end + group_by=endpoint = grouped usage data [OK]
Hint: Check query keys: start, end, group_by for output clues [OK]
Common Mistakes:
  • Ignoring group_by parameter effect
  • Assuming single date instead of range
  • Thinking group_by is invalid
4. You wrote this API call to get usage metrics but get a 400 Bad Request error:
GET /metrics?start_date=2024-01-01&end_date=2024-01-07&groupby=endpoint
What is the likely cause?
medium
A. Incorrect query parameter names; should be 'start' and 'end' and 'group_by'
B. GET method cannot have query parameters
C. Missing API key in the URL
D. Using 'groupby' instead of 'groupby_endpoint'

Solution

  1. Step 1: Check query parameter names

    The API expects 'start', 'end', and 'group_by' parameters, not 'start_date', 'end_date', or 'groupby'.
  2. Step 2: Understand error cause

    Wrong parameter names cause the API to reject the request with 400 Bad Request.
  3. Final Answer:

    Incorrect query parameter names; should be 'start' and 'end' and 'group_by' -> Option A
  4. Quick Check:

    Parameter names must match API spec [OK]
Hint: Match query parameter names exactly as API docs say [OK]
Common Mistakes:
  • Using wrong parameter names
  • Thinking GET can't have query parameters
  • Assuming missing API key causes 400 error
5. You want to build a dashboard showing daily API call counts and average response times grouped by endpoint for the last 30 days. Which API call best fits this need?
hard
A. GET /api/metrics/daily?group=endpoint&fields=count,response_time_avg
B. GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg
C. POST /api/metrics with JSON body {"group_by":"endpoint","metrics":["count","response_time_avg"]}
D. GET /api/metrics?date_range=last30days&group_by=endpoint

Solution

  1. Step 1: Identify required parameters

    We need a date range (last 30 days), grouping by endpoint, and metrics count and average response time.
  2. Step 2: Match API call to requirements

    GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg uses GET with start/end dates, group_by=endpoint, and metrics=count,response_time_avg which fits perfectly.
  3. Step 3: Check other options

    POST /api/metrics with JSON body {"group_by":"endpoint","metrics":["count","response_time_avg"]} uses POST which is unusual for fetching metrics; A uses different parameter names not standard; D lacks metrics selection.
  4. Final Answer:

    GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg -> Option B
  5. Quick Check:

    Date range + group_by + metrics = GET /api/metrics?start=2024-05-01&end=2024-05-30&group_by=endpoint&metrics=count,response_time_avg [OK]
Hint: Use GET with start/end, group_by, and metrics parameters [OK]
Common Mistakes:
  • Using POST instead of GET for data retrieval
  • Missing metrics parameter
  • Using incorrect parameter names
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