The Life Starter
0 of 6 complete0%
Course Library · Lesson 1 of 6
Digital · Guided lesson

Define the local API contract

About 29 minutes · 7 reading + 22 practice and checks
Time includes reading, practice, and questions. Extra videos or further study are optional.
See this course’s project requirements

A localhost-only read-only JSON book API with defined routes, 200/404 responses, headers and an automated client contract test.

Keep your working files in your own notebook or software. Save a private description, checklist, and work link in My Proof.

What to include

  • A three-route API contract with status and typed body.
  • A loopback-only server boundary record.
  • A checked json response with matching headers.
  • A routing test matrix with exact-path boundaries.
  • A real local transport test with bounded cleanup.
  • A complete api handoff with a controlled contract change.

Review and revise

Use these criteria to check your work and choose what to improve.

  • The implementation or declared simulation follows the supplied contract and retains inspectable original inputs.
  • Normal, boundary and rejected cases are recorded with expected versus observed results.
  • The changed case has a correct explanation and does not rely on hidden state.
  • The project includes source, outputs, instructions and honest tool, privacy and verification limits.
Open the full course project
Want more background?
Before you begin

The idea in everyday life

GET /books returns two book objects. GET /books/2 returns {id:2, title: River Map}. GET /books/99 returns 404 and {error: not found}.

The idea

A server contract connects method and exact path to status, headers and body. This local practice reads fictional books only. Unsupported query strings or missing IDs return 404; it is not a general production API.

Follow along

Define the local API contract — original worked practice

A server contract connects method and exact path to status, headers and body. This local practice reads fictional books only. Unsupported query strings or missing IDs return 404; it is not a general production API.

GET /books returns two book objects. GET /books/2 returns {id:2, title: River Map}. GET /books/99 returns 404 and {error: not found}.

  1. 1. Step 1

    Write the three exact requests.

    You should see: List, existing item and missing item are separate cases.

    This keeps the rule and its observable result together.

  2. 2. Step 2

    Record status 200 versus 404.

    You should see: A missing resource is not an empty successful object.

    This keeps the rule and its observable result together.

  3. 3. Step 3

    Name JSON field types.

    You should see: id is number; title and error are strings; books isarray.

    This keeps the rule and its observable result together.

  4. 4. Step 4

    Create a request/response contract table.

    You should see: A three-route API contract with status and typed body.

    This keeps the rule and its observable result together.

Now change one thing

Request/books/1. Enter the returned id.

Your work

What to finish

A three-route API contract with status and typed body.

Common mistake

Watch for this

Changing the resource shape between routes so the client cannot follow one declared JSON contract.

How can I tell I understand it?

Explain and demonstrate the required distinction: A server contract connects method and exact path to status, headers and body. This local practice reads fictional books only. Unsupported query strings or missing IDs return 404; it is not a general production API. Show a changed input and the expected result without weakening this contract.

Try 3 questions

Quick knowledge check

Answer all 3 questions. Get at least 2 right and the lesson completes automatically.

Not yet passed

You’ll get an explanation for each answer. Signed in? Your results save to your account.

1What status does /books/99 return?
2What kind of JSON value is books?
3Is /books a write endpoint?
0 of 3 answeredApply the lesson to a short question, then review the explanation.
1
Finish this lesson

Pass the check. We’ll save the progress.

Answer all 3 questions above and get at least 2 right. You can review the explanations and try again.

Go to the knowledge check
Tools, templates, and lesson sources

Tools and templates

Tools open in a new tab so you can keep your place here.

Sources and further reading

Explore the references behind this lesson.

docs.python.org — http.server.html
Source & access notes · checked 2026-10-01

Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.

Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.

Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.

docs.python.org — json.html
Source & access notes · checked 2026-10-01

Relevant documented module/API behavior inspected during expansion authoring; actual execution evidence is recorded separately. No grant eligibility is established.

Access: Official page retrieved with the web reader on 2026-10-01. Documentation reading does not certify execution in every native tool or browser.

Reuse: Original local practice files, fictional data, worked examples and questions. Concepts paraphrased and linked; source exercises are not copied.

Report a problem with this lesson

Tell us what went wrong. Please leave out personal information and private project contents.

No sign-in needed.