RESTful Node.js: A Structured Approach
  • Book Cover
  • About the Author
  • Links and Resources
  • Part I: The Why
    • Foreword
    • Preface
    • Chapter 1: Introduction
      • The Rise of REST and Distributed Systems
      • Problem #1: Structureless Design, Structureless REST
      • The Emergence of JavaScript and Node.js
      • Problem #2: Structureless JavaScript, Structureless Node.js
      • Behold, the Solution: A Structured Approach
      • Summary
  • Part 2: The Theory
    • Chapter 2: REST Origins
      • A Brief History of the Web and the Birth of REST
      • REST vs. HTTP
      • REST - The Abstract Web Architecture
      • HTTP - A Peak at REST's Concrete Implementation
      • What does it mean for an API to be RESTful?
      • Measuring "RESTfulness" with Richardson Maturity Model
      • Pragmatic REST vs Dogmatic REST
      • Summary
    • Chapter 3: RESTful API Design Guidelines and "Best Practices"
      • Theories vs. Principles vs. Guidelines
      • URI Design
      • Method Verbs
      • Status Codes
      • Representational Design
      • Metadata Design
      • Versioning Strategies
      • Security Considerations
      • Documentation
      • Case Study: GitHub
      • Summary
    • Chapter 4: Structured JavaScript Architecture
      • The Monstrous Monolith and Its Downfall
      • Layered/N-Tier Architecture: The Unpopular Proven Way
      • Microservices and Distributed Computing: A Popular Misdirection
      • Summary
    • Chapter 5: The 8 Step Recipe
      • Route Name (URI)
      • Input Request
      • Middleware
      • Validation
      • Domain
      • Events
      • Output Response
      • Test, Refactor, Document
      • Summary
  • Part 3: The Code
    • Chapter 6: Introduction to the Bookstore API
      • The Bookstore API Endpoint Specifications
      • API Design and Code Structure
      • Project Setup
      • Summary
    • Chapter 7: Retrieving Books from our API
      • Retrieving All Books - Planning
      • Retrieving All Books - Implementation
      • Retrieving A Book By ID - Planning
      • Retrieving A Book By ID - Implementation
      • Summary
    • Chapter 8: Adding Authentication to our API
      • Registering the User - Planning
      • Registering the User - Implementation
      • Logging the User In - Planning
      • Logging the User In - Implementation
      • Getting Authenticated User - Planning
      • Getting Authenticated User - Implementation
      • Summary
    • Chapter 9: Adding the Create, Update, and Delete Operations to our API
      • Creating A Book Listing - Planning
      • Creating A Book Listing - Implementation
      • Updating A Book Listing By ID - Planning
      • Updating A Book Listing By ID - Implementation
      • Deleting A Book Listing By ID - Planning
      • Deleting A Book Listing By ID - Implementation
      • Summary
    • Chapter 10: Testing our API
      • Testing the Request
      • Testing the Middleware
      • Testing the Validation
      • Testing the Domain
      • Testing the Event
      • Testing the Response
      • Testing the Controller
      • Integration Test
      • Summary
  • Conclusion
    • Final Words
  • Bonus!
    • Refactoring to HATEOAS
  • Appendix
    • Sources & References
Powered by GitBook
On this page
  • History of the Internet
  • The Birth of the World Wide Web and REST
Edit on GitHub
  1. Part 2: The Theory
  2. Chapter 2: REST Origins

A Brief History of the Web and the Birth of REST

PreviousChapter 2: REST OriginsNextREST vs. HTTP

Last updated 3 years ago

History of the Internet

The Internet is a network of networks of computers. It was created with the purpose of facilitating communication and sharing of resources between different machines. The birth of the Internet could be traced back during the cold war between the U.S and Soviet Union when the two began competing for the .

On October 4, 1957, Sputnik 1 was launched into space by the Soviet Union, the world’s first satellite. Caught off-guard by the Soviet's rapid technological advancements, the U.S. government created ARPA (Advanced Research Projects Agency) which was responsible for the both technological and scientific advancement of the country. Despite the success of ARPA, computers were still not able to communicate with one other. Thus, began the development of a network called .

During September of 1969, four nodes (stations) located at University of California - Los Angeles, Stanford University, Massachusetts Institute of Technology, and the University of Utah were established, giving birth to the ARPANET and what we now know it as the Internet. In month of December 1974, the word "Internet" would officially be introduced to the world.

Throughout the 1970's and 1980's, various different nodes would be added to the internet. A variety of different Internet protocols like TCP/IP, UDP, and FTP were introduced.

An RFC or Request For Comments is a document that contains proposals for new protocols or systems. Today, RFCs are submitted to and handled by the Internet Society which has a sub-body called the Internet Engineering Task Force (IETF). This sub-body works on the standardization of Internet protocols and systems. An RFC is then deliberated on by experts, revised and then hopefully, eventually adopted as a standard.

-

The Birth of the World Wide Web and REST

During the 1990’s, the researchers at the felt a need for automated sharing of their findings between their machines. CERN had documents that cross-referenced other documents, these are what we now would call (hyper) links.

On November 12, 1990, Tim Berners-Lee introduced his World Wide Web project in order to store and retrieve these inter-connected documents. Concepts such as URI, HTML, and HTTP were first introduced at this time.

On August 6, 1991, Tim Berners-Lee published the first-ever () in the world to the public.

After this, the "browser wars" began, browsers such as Netscape Navigator and Internet Explorer competed for the number one spot.

Between the years 1991 - 1997, the number of users on the web reached over 50 million. The Internet's infrastructure was not developed enough at the time, having the system lack in both stability and availability. Thus, and began their work on HTTP/1.1 in order to solve this massive scaling issue that the Internet had. The resulting work was a standardized specification that was released in January 1997, . By this time, over 70% of all browsers were HTTP/1.1 compliant. After that date, the Internet's problems of scalability began to slowly fade away.

In completing and releasing HTTP/1.1, Fielding decided to generalize HTTP into a more abstract architectural style, called REST.

I finished the HTTP standard in 1997, and it wasn't until I had done the work that a colleague of mine, Larry Masinter came and was talking to me about a related subject. and I was telling him about how I've done all this work and that I don't know what to do for my dissertation. He just looked at me, 'well you're the only one who can describe HTTP and why it's there and what is there for, why don't you just do that'.

-Roy Fielding, Creator of REST and HTTP 1.1

Fielding would then go on to write his doctoral dissertation titled , where he would describe the REST architectural style in detail.

Architectural Styles and the Design of Network-based Software Architectures
Space Race
ARPANET (Advanced Research Projects Agency Network)
RFC
European Council for Nuclear Research (CERN)
website
http://info.cern.ch/hypertext/WWW/TheProject.html
Roy Thomas Fielding
Sir Tim Berners-Lee
RFCs 2068, 2616, 7230-7235
https://tools.ietf.org/html/rfc2068