![]() |
Carl Chesser
@che55er | che55er.io |
At CERN in Geneva, software engineer Tim Berners-Lee was facing a problem that had little to do with e-commerce or social media.
The challenge was collaboration.
Tim Berners-Lee's early HTTP was a tiny request/response idea with one basic operation:
GET /document
No status codes, no headers, if you could connect, you could get information.
RFC 9110 describes HTTP as beginning in 1990 as a simple low-latency GET mechanism.
"Creating the web was really an act of desperation..."
Tim Berners-Lee, reflecting on information-sharing difficulty at CERN.
Human communication is complex. Our contracts are often vague.
Vague contracts create expensive retries.
Good APIs define behavior up front.
Vague acknowledgement creates polling.
Including when the response will be returned in the acknowledgment lowers the cost of communication.
By including what your response will contain, you help the requester understand the scope.
202 Accepted
"I heard you, but it's still in progress."
Use it with a next update time.
HTTP needed a way to say: "I accepted this, but the work is not done yet."
It was built for asynchronous work so connections could quickly be freed (efficiency).
RFC 9110 describes 202 as intentionally noncommittal and points to status monitors or fulfillment estimates.
The update promise is the important part.
"If this becomes urgent before then, use the incident channel."
A fallback path tells people what to do before the next scheduled update.
301 Moved Permanently
"The owner or support path changed."
Helpful response: "I no longer support this. Please contact the platform team in #platform-help for future requests."
429 Too Many Requests
"I'm overloaded right now."
Use it with a reset time or a smaller request.
429 Too Many Requests was added later, in April 2012, in RFC 6585 to make rate limiting explicit.
The request may be valid, but there are too many requests in a period of time.
RFC 6585 specifies 429 responses can include details and a Retry-After header.
503 Service Unavailable
"I'm out of the office until June 3rd."
Automatic signals help others know when you are unavailable to respond.
Without contract: "Just checking in on that earlier email..."
With contract: The requester knows when to expect a response and does not have to poll.
When timing is explicit, clients stop polling.
Clear expectations are the fastest way to reduce uncertainty and noise.
![]() |
Carl Chesser
@che55er | che55er.io |