Bird
Raised Fist0
Rest APIprogramming~10 mins

API analytics and usage metrics in Rest API - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to retrieve the total number of API requests from the analytics endpoint.

Rest API
response = requests.get('https://api.example.com/analytics/usage')
total_requests = response.json().get([1])
Drag options to blanks, or click blank then click option'
ArequestCount
BtotalRequests
Ctotal_calls
DusageCount
Attempts:
3 left
💡 Hint
Common Mistakes
Using a key that does not exist in the response JSON.
Confusing total requests with usage count.
2fill in blank
medium

Complete the code to filter API usage data for the last 7 days using query parameters.

Rest API
params = {'period': [1]
response = requests.get('https://api.example.com/analytics/usage', params=params)
Drag options to blanks, or click blank then click option'
A'last_month'
B'weekly'
C'last_7_days'
D'7days'
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect period strings like 'weekly' or '7days' which the API does not recognize.
Omitting quotes around the string value.
3fill in blank
hard

Fix the error in the code to correctly parse the JSON response and extract the average response time.

Rest API
data = response.[1]()
avg_response_time = data['metrics']['avgResponseTime']
Drag options to blanks, or click blank then click option'
Aparse_json
Btext
Ccontent
Djson
Attempts:
3 left
💡 Hint
Common Mistakes
Using text() which returns a string, not a dictionary.
Trying to access JSON data without parsing it first.
4fill in blank
hard

Complete the code to create a dictionary comprehension that maps each API endpoint to its total call count, filtering only endpoints with more than 100 calls.

Rest API
endpoint_calls = {endpoint: data[endpoint] for endpoint in data if data[endpoint] [1] 100}
Drag options to blanks, or click blank then click option'
B>
C>=
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Adding an operator after data[endpoint] in the value part causing syntax errors.
Using less than operator which filters wrong endpoints.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps each API endpoint (in uppercase) to its average response time, including only endpoints with average response time less than 200 ms.

Rest API
fast_endpoints = [1]: data[endpoint]['avgResponseTime'] for endpoint in data if data[endpoint]['avgResponseTime'] [2] [3]
Drag options to blanks, or click blank then click option'
Aendpoint.upper()
B<
C200
Dendpoint.lower()
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase instead of uppercase for keys.
Using greater than operator which filters wrong endpoints.
Omitting the threshold value.

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