3 min read

Chapter 02: History of REST

The father of the web is Timothy Berners-Lee, who was working at CERN (The European Organization for Nuclear Research) when he came up with the idea. His goal was to simplify the sharing and discovery of information among scientists through a connected system of documents. In 1989, he proposed a concept that laid the foundation for the World Wide Web (W3) - a hypertext-based system accessible via the internet. The first web server and browser were created a year later, in 1990.

Timothy Berners Lee (source)

Once Upon a Web

The fundamental building blocks of the web, refined over time, are still in use today. These include the Hypertext Transfer Protocol (HTTP) and Hypertext Markup Language (HTML). HTTP serves as the transport protocol for HTML documents. A user requests a page through a web browser (the client), and that page is transferred over the network from a server.

To enable this, Tim Berners-Lee wrote the first web browser, called WorldWideWeb (later renamed Nexus). He also happens to be the author of the URI, the first web server, and the first WYSIWYG editor.

Screen shot of the WorldWideWeb browser (source)

The capabilities of HTTP/0.9 and HTML were extremely limited compared to today’s web. The protocol was used solely to deliver a raw HTML document—without the HTTP headers or status codes we know today. Nowadays, HTTP is used to transmit all kinds of data. In 1993, CERN made the W3 project publicly available, sparking a true revolution. Between 1990 and 1995, the number of internet users grew to approximately 44 million.

The explosive interest in the Internet placed a heavy burden on early web creators. Many companies were eager to invest in the emerging web, but without standardization, it remained a risky endeavor. In 1993, a new browser called Mosaic appeared, soon followed by Netscape Navigator and Internet Explorer.

During this time, key standards began to take shape, most notably the HTTP/1.0 and HTTP/1.1 protocols. These played a crucial role in defining how clients and servers communicate and laid the groundwork for the modern web.

The Standardization Process

Until the official release of the HTTP/1.0 standard in 1996, the world of web protocols was marked by inconsistency. Many aspects of early HTTP were interpreted differently, and both developers and browser vendors often implemented features in their own way. Even as the web gradually became more standardized, significant differences between browsers persisted. Who could forget the long nights spent tweaking web pages just to make them look more or less the same across different browsers?

The next breakthrough in the HTTP protocol didn’t come until 2015, with the release of HTTP/2.0. By then, the number of internet users had grown exponentially along with the number of tools implementing these newly released standards. A key role in the standardization of the HTTP protocol was played by a working group that included Berners-Lee, Frystyk, and Fielding.

Roy Thomas Fielding, in particular, played a major role in shaping the architecture of the web. As part of his doctoral dissertation, he formulated the principles of efficient communication in distributed systems.

Fielding’s doctoral dissertation was published in 2000, and its chapter titled Representational State Transfer is now known to every web developer simply as REST.

REST is an architectural style for distributed systems, primarily applied in the context of the web. It defines six architectural constraints, such as client-server separation, statelessness, caching, a uniform interface, and layered architecture. The goal of these principles is to enable better scalability, performance, reliability, and simpler system development.

In many ways, REST defined the way the modern web works.

Chapter 03: The Principles of REST by Roy Fielding
Explore the six architectural constraints defined by Roy Fielding that form the foundation of REST. This chapter breaks down each principle to reveal how they contribute to scalable, reliable and well-structured web APIs.