Chapter 68
68 / 71

API Basics

⏱️ 35 min

What you're probably confused about right now

"A 200 status code means I'm done, right?"

Not necessarily. You still need to validate the response body fields and business-level status.

One-line definition

An API is a data contract between systems -- exchanging requests and responses using methods and parameters.

Real-life analogy

A takeout window: you order from a set menu, and get results back in an agreed format.

Minimal working example

import requests
resp = requests.get("https://jsonplaceholder.typicode.com/posts/1", timeout=10)
print(resp.status_code)
print(resp.json())

Quick quiz (5 min)

  1. Call a user list API.
  2. Extract id/name/email.
  3. Save to a local JSON file.

Quiz answer guide & grading criteria

  • Answer direction: write runnable code that covers the core requirements and edge cases from the prompt.
  • Criterion 1 (Correctness): Main flow produces correct results, key branches execute.
  • Criterion 2 (Readability): Clear variable names, no excessive nesting.
  • Criterion 3 (Robustness): Basic protection against null values, type errors, or unexpected input.

Take-home task

Write a fetch_json(url) wrapper with unified error handling and return structure.

Acceptance criteria

You can independently:

  • Make GET/POST requests
  • Handle status codes and exceptions
  • Validate key response fields

Common errors & debugging steps (beginner edition)

  • Can't read the error: start from the last line -- find the error type (TypeError, NameError, etc.), then trace back to the line in your code.
  • Not sure about a variable's value: throw in a temporary print(var, type(var)) at key points to verify data looks right.
  • Changed code but nothing happened: make sure the file is saved, you're running the right file, and your terminal is in the correct venv.

Common misconceptions

  • Misconception: no need to set a timeout.
  • Reality: production code must always have timeouts.