mirror of
				https://github.com/donnemartin/system-design-primer.git
				synced 2025-11-04 10:12:32 +03:00 
			
		
		
		
	Add Hypertext transfer protocol (HTTP) section
This commit is contained in:
		
							
								
								
									
										21
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								README.md
									
									
									
									
									
								
							@@ -1451,3 +1451,24 @@ If queues start to grow significantly, the queue size can become larger than mem
 | 
			
		||||
  <br/>
 | 
			
		||||
  <i><a href=http://www.escotal.com/osilayer.html>Source: OSI 7 layer model</a></i>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
### Hypertext transfer protocol (HTTP)
 | 
			
		||||
 | 
			
		||||
HTTP is a method for encoding and transporting data between a client and a server.  It is a request/response protocol: clients issue requests and servers issue responses with relevant content and completion status info about the request.  HTTP is self-contained, allowing requests and responses to flow through many intermediate routers and servers that perform load balancing, caching, encryption, and compression.
 | 
			
		||||
 | 
			
		||||
A basic HTTP request consists of a verb (method) and a resource (endpoint).  Below are common HTTP verbs:
 | 
			
		||||
 | 
			
		||||
| Verb | Description | Idempotent* | Safe | Cacheable |
 | 
			
		||||
|---|---|---|---|---|
 | 
			
		||||
| GET | Reads a resource | Yes | Yes | Yes |
 | 
			
		||||
| POST | Creates a resource or trigger a process that handles data | No | No | Yes if response contains freshness info |
 | 
			
		||||
| PUT | Creates or replace a resource | Yes | No | No |
 | 
			
		||||
| PATCH | Partially updates a resource | No | No | Yes if response contains freshness info |
 | 
			
		||||
| DELETE | Deletes a resource | Yes | No | No |
 | 
			
		||||
 | 
			
		||||
*Can be called many times without different outcomes.
 | 
			
		||||
 | 
			
		||||
HTTP is an application layer protocol relying on lower-level protocols such as **TCP** and **UDP**.
 | 
			
		||||
 | 
			
		||||
* [HTTP](https://www.nginx.com/resources/glossary/http/)
 | 
			
		||||
* [README](https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and-TCP-protocol)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user