HTTP

김신영·2022년 10월 23일
0
post-thumbnail

Document for HTTP

https://developer.mozilla.org/ko/docs/Web/HTTP

HyperText Transfer Protocol

HTTP 특징

  1. Server-Client
  2. Connectionless
  3. Stateless

HTTP Method

HTTP MethodRequest BodyResponse BodySafeIdempotentCacheable
GETXOOOO
HEADXXOOO
POSTOOXX
PUTOOXOX
DELETEXOXOX
PATCHOOXX
CONNECTOOXXX
OPTIONSOOOX
TRACEXOOOX

HTTP Status Code

HTTP Status CodeReason
200OK
201Created
202Accepted
203Non-Authoritative Information
204No Content
205Reset Content
206Partial Content
300Multiple Choices
301Moved Permanently
302Found
303See Other
304Not Modified
307Temporary Redirection
308Permanent Redirection
400Bad Request
401Unauthorized
402Payment Required
403Forbidden
404Not Found
405Method Not Allowed
406Not Acceptable
500Internal Server Error
501Not Implemented
502Bad Gateway
503Service Unavailable
504Gateway Timeout
505HTTP Version Not Supported

HTTP Header

HTTP HeaderUsing whenDescription
Content-TypeResponsehttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Type
Content-EncodingResponsehttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Encoding
Content-LanguageResponsehttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Language
Content-LengthResponsehttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Length
Transfer-EncodingRequest

Transfer-Encoding: chunked
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Transfer-Encoding
RangeRequest

Range: bytes=1001-2000
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Range
Content-RangeResponse

HTTP/1.1 206 Partial Content
Content-Range: bytes 1001-2000 / 2000
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Range
FromRequesthttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/From
RefererRequesthttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Referer
User-AgentRequesthttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/User-Agent
ServerResponsehttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Server
DateResponsehttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Date
HostRequesthttps://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Host
LocationResponse

HTTP/1.1 201 Created
Location: /users/1001
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Location
AllowResponse

HTTP/1.1 405 Method Not Allowed
Allow: GET,HEAD,PUT
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Allow
Retry-AfterResponse

HTTP/1.1 503 Service Unavailable
Retry-After: 120
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Retry-After
AuthorizationRequest

Authorization: Basic xxxxxxxxxxxxxxxxx
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Authorization
WWW-AuthenticateResponse

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/WWW-Authenticate
Set-CookieResponse

set-cookie: sessionId=12345; expires=Sat, 26-Dec-2021 00:00:00 GMT; path=/; domain=.google.com' ;Secure; HttpOnly; SameSite
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Set-Cookie
CookieRequest

cookie: name=value; name2=value2; name3=value3
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Cookie
Cache-ControlRequest, Response

Cache-Control: max-age=60
Cache-Control: private
Cache-Control: public
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: must-revalidate
Cache-Control: s-maxage=60
Cache-Control: proxy-revalidate
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Cache-Control
Last-ModifiedResponse

HTTP/1.1 304 Not Modified
Last-Modified: \<day-name>, \<day> \<month> \<year> \<hour>:\<minute>:\<second> GMT
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Last-Modified
If-Modified-SinceRequest

If-Modifed-Since: \<day-name>, \<day> \<month> \<year> \<hour>:\<minute>:\<second> GMT
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/If-Modified-Since
EtagResponse

HTTP/1.1 304 Not Modified
Etag: \<etag_value>
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Etag
If-None-MatchRequest

If-None-Match: \<etag_value>
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/If-None-Match
AgeResponse

Age: 60
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Age
X-Forwarded-ForRequest

X-Forwarded-For: client, proxy1, proxy2
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/X-Forwarded-For
VaryResponse

Vary: \<header-name>, \<header-name>
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Vary
OriginRequest

Origin: \<scheme> "://" [ ":" \<port> ]
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Origin
Access-Control-Request-HeadersRequest

Access-Control-Request-Headers: \<header-name>, \<header-name>, ...
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers
Access-Control-Request-MethodRequest

Access-Control-Request-Method: \<method>
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Request-Method
Access-Control-Allow-OriginResponse

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: \<origin>
Access-Control-Allow-Origin: null
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
Access-Control-Allow-HeadersResponse

Access-Control-Allow-Headers: \<header-name>[, \<header-name>]
Access-Control-Allow-Headers:
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
Access-Control-Allow-MethodsResponse

Access-Control-Allow-Methods: \<method>, \<method>, ...
Access-Control-Allow-Methods: *
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods
Access-Control-Expose-HeadersResponse

Access-Control-Expose-Headers: [\<header-name>[, \<header-name>]]
Access-Control-Expose-Headers:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
Access-Control-Max-AgeResponse

Access-Control-Max-Age: \<delta-seconds>
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
Access-Control-Allow-CredentialsResponse

Access-Control-Allow-Credentials: true
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials

REST

  1. 자원 식별 (URI: Uniform Resource Identifier)
  2. 메시지를 통한 리소스 조작 (Content-Type)
  3. 자기서술적 메시지 (HTTP Method, Header)
  4. 애플리케이션 상태에 대한 엔진으로서 하이퍼미디어 (HATEOAS: Hypermedia as the Engine of Application State)

Reference

https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design

profile
Hello velog!

1개의 댓글