diff --git a/HTTP_TREE.txt b/HTTP_TREE.txt new file mode 100644 index 0000000..c2f6e82 --- /dev/null +++ b/HTTP_TREE.txt @@ -0,0 +1,175 @@ +HTTP Request +├── Request Line +│ ├── Method +│ │ ├── GET +│ │ ├── POST +│ │ ├── PUT +│ │ ├── PATCH +│ │ ├── DELETE +│ │ ├── HEAD +│ │ ├── OPTIONS +│ │ └── TRACE +│ ├── Request Target +│ │ ├── Absolute Path (/users/123) +│ │ ├── Path Parameters (/users/{id}) +│ │ └── Query Parameters (?limit=10&sort=asc) +│ └── HTTP Version +│ ├── HTTP/1.0 +│ ├── HTTP/1.1 +│ ├── HTTP/2 +│ └── HTTP/3 (QUIC, UDP-based) +│ +├── Headers +│ ├── General Headers (apply to both request & response) +│ │ ├── Cache-Control +│ │ ├── Connection +│ │ ├── Date +│ │ ├── Pragma +│ │ ├── Trailer +│ │ ├── Transfer-Encoding +│ │ ├── Upgrade +│ │ └── Via +│ │ +│ ├── Request-Specific Headers +│ │ ├── Host (required in HTTP/1.1) +│ │ ├── User-Agent +│ │ ├── Referer (now spelled `Referrer` in Fetch API) +│ │ ├── Origin +│ │ ├── Authorization +│ │ ├── Cookie +│ │ └── Proxy-Authorization +│ │ +│ ├── Representation Headers (describe message body) +│ │ ├── Content-Type +│ │ ├── Content-Encoding +│ │ ├── Content-Language +│ │ ├── Content-Length +│ │ ├── Content-Location +│ │ └── Content-MD5 (deprecated) +│ │ +│ ├── Conditional Headers (for caching & state validation) +│ │ ├── If-Match +│ │ ├── If-None-Match +│ │ ├── If-Modified-Since +│ │ ├── If-Unmodified-Since +│ │ └── If-Range +│ │ +│ ├── Range Headers +│ │ ├── Range +│ │ └── If-Range +│ │ +│ └── Custom Headers +│ └── X-* (e.g., X-Request-ID) +│ +└── Body / Payload (optional) + ├── Form submissions + │ ├── application/x-www-form-urlencoded + │ └── multipart/form-data + ├── JSON (application/json) + ├── XML (application/xml) + ├── Plain text (text/plain) + ├── Binary (images, files) + └── GraphQL / other APIs + + +--------------------------------------------------------------------------------------------------------------- +=============================================================================================================== +--------------------------------------------------------------------------------------------------------------- + + +HTTP Response +├── Status Line +│ ├── HTTP Version (HTTP/1.1, HTTP/2, HTTP/3) +│ ├── Status Code +│ │ ├── 1xx Informational +│ │ │ ├── 100 Continue +│ │ │ ├── 101 Switching Protocols +│ │ │ ├── 102 Processing (WebDAV) +│ │ │ └── 103 Early Hints +│ │ ├── 2xx Success +│ │ │ ├── 200 OK +│ │ │ ├── 201 Created +│ │ │ ├── 202 Accepted +│ │ │ ├── 203 Non-Authoritative Information +│ │ │ ├── 204 No Content +│ │ │ ├── 205 Reset Content +│ │ │ └── 206 Partial Content +│ │ ├── 3xx Redirection +│ │ │ ├── 300 Multiple Choices +│ │ │ ├── 301 Moved Permanently +│ │ │ ├── 302 Found +│ │ │ ├── 303 See Other +│ │ │ ├── 304 Not Modified +│ │ │ ├── 307 Temporary Redirect +│ │ │ └── 308 Permanent Redirect +│ │ ├── 4xx Client Errors +│ │ │ ├── 400 Bad Request +│ │ │ ├── 401 Unauthorized +│ │ │ ├── 402 Payment Required (reserved) +│ │ │ ├── 403 Forbidden +│ │ │ ├── 404 Not Found +│ │ │ ├── 405 Method Not Allowed +│ │ │ ├── 406 Not Acceptable +│ │ │ ├── 407 Proxy Authentication Required +│ │ │ ├── 408 Request Timeout +│ │ │ ├── 409 Conflict +│ │ │ ├── 410 Gone +│ │ │ ├── 411 Length Required +│ │ │ ├── 412 Precondition Failed +│ │ │ ├── 413 Payload Too Large +│ │ │ ├── 414 URI Too Long +│ │ │ ├── 415 Unsupported Media Type +│ │ │ ├── 416 Range Not Satisfiable +│ │ │ ├── 417 Expectation Failed +│ │ │ └── 418 I'm a Teapot (Easter Egg) +│ │ └── 5xx Server Errors +│ │ ├── 500 Internal Server Error +│ │ ├── 501 Not Implemented +│ │ ├── 502 Bad Gateway +│ │ ├── 503 Service Unavailable +│ │ ├── 504 Gateway Timeout +│ │ └── 505 HTTP Version Not Supported +│ └── Reason Phrase (human-readable text, optional) +│ +├── Headers +│ ├── General Headers (same as request) +│ │ ├── Cache-Control, Connection, Date, etc. +│ │ +│ ├── Response Headers +│ │ ├── Server +│ │ ├── Location (used for redirects, 201/3xx) +│ │ ├── Vary +│ │ ├── Retry-After +│ │ └── Set-Cookie +│ │ +│ ├── Representation Headers (describe body) +│ │ ├── Content-Type +│ │ ├── Content-Encoding +│ │ ├── Content-Language +│ │ ├── Content-Length +│ │ ├── Last-Modified +│ │ ├── ETag +│ │ └── Allow (which methods are allowed for resource) +│ │ +│ ├── Caching Headers +│ │ ├── Age +│ │ ├── Expires +│ │ ├── Cache-Control +│ │ └── Vary +│ │ +│ ├── Security Headers +│ │ ├── Strict-Transport-Security (HSTS) +│ │ ├── X-Frame-Options +│ │ ├── X-Content-Type-Options +│ │ ├── Referrer-Policy +│ │ ├── Permissions-Policy +│ │ └── Content-Security-Policy (CSP) +│ │ +│ └── Custom Headers (X-* or vendor specific) +│ +└── Body (optional) + ├── HTML (for websites) + ├── JSON (for APIs) + ├── XML (older APIs, RSS, SOAP) + ├── Files (PDF, images, etc.) + └── Empty (e.g., 204 No Content)