2 min read

Understanding RFCs

REST APIs are built on top of the HTTP protocol, which is very well standardized. Since its inception, the HTTP protocol has been described through RFCs (Request For Comments). RFCs follow their own lifecycle, which has significantly slowed down as the number of Internet users has grown. Today, RFCs often end up “catching up” with common practice. RFCs are not standards in the ISO sense, but rather recommendations that most software organizations choose to follow. This distinction is also reflected in the way individual RFCs are labeled.

Exploring RFCs

The simplest way to look up an RFC is to use Google and enter the phrase together with the “RFC” suffix. For example, to find the RFC describing the HTTP header Accept:

image-20220419200455325

From the search results, I recommend using the website tools.ietf.org.

image-20220419200705535

Structure of an RFC Document

An RFC consists of a header, the RFC title, an abstract, a table of contents, and the main body of the text. Before analyzing an RFC, it is essential to check the header to confirm whether the document is still current. Below is an example of the header of RFC 7231, along with a description of its individual parts.

image-20240213131457341
Section Meaning
Request for Comments RFC identifier
Obsoletes This RFC replaces some older ones
Obsoleted by This RFC is obsolete and has been replaced by another
Updates RFCs that update the displayed RFC
RFC Status Proposed Standard

The right-hand side of the header also references corrections (Errata exist) and lists the authors.

For developers, it is crucial to check whether the RFC in question is already obsolete (Obsoleted by) or has been updated (Updated by). For example, in the sample shown, RFC 7231 has already been replaced by the newer RFC 9110. This happened fairly recently, in 2022.

The lifecycle of RFCs has evolved over the history of the IETF, and as a result, currently recognized standards are labeled in different ways:

Lifecycle Label Description
Draft Standard Recognized standards, old designation according to RFC 2026
Proposed Standard Recognized standards, new designation according to RFC 6410
Internet Standard Internet standard (RFC 6410), more mature than Proposed Standard
Best Current Practice Almost a standard, recommended to follow

All of the above lifecycle stages of an RFC should be respected by developers.

Comments