HTTP ๊ฐ์
- ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
- TCP ๊ธฐ๋ฐ์ HTTP/1.1 ์ด ์ฃผ๋ก ์ฐ์ธ๋ค.
๋น ์ฐ๊ฒฐ์ฑ (Connectionless)
- HTTP ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ด๋ค.
- ์์ฒญ โ ์๋ต โ ๋ฐ๋ก ์ฐ๊ฒฐ ๋์
- ์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
ํ๊ณ์ ๊ทน๋ณต
- TCP/IP ์ฐ๊ฒฐ์ ๋งค๋ฒ ์๋ก ๋งบ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ 3 way handshake ์๊ฐ์ด ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค.
- ์ง๊ธ์ HTTP Persistent Connections ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
HTTP ์ HTTPS ์ ์ฐจ์ด
- HTTPS ๋ HTTP ์ ๋ณด์ ๊ณ์ธต์ ์ถ๊ฐํ ๊ฒ์ด๋ค.
- HTTPS ๋ ์ 3์ ์ธ์ฆ, ๊ณต๊ฐํค ์ํธํ, ๋น๋ฐํค ์ํธํ๋ฅผ ์ฌ์ฉํ๋ค.
SSL handshake
- ํด๋ผ์ด์ธํธ๋ TCP 3 way handshake ๋ฅผ ์ํํ ํ Client Hello ๋ฅผ ์ ์กํ๋ค.
- ์๋ฒ๋ ์ธ์ฆ์๋ฅผ ๋ณด๋ธ๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋ฐ์ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ๊ธฐ ์ํด์ ๋ฑ๋ก๋ ์ธ์ฆ๊ธฐ๊ด์ธ์ง ํ์ธํ๋ค.
- ์ด ์ธ์ฆ์๋ ์ธ์ฆ๊ธฐ๊ด์ ๊ฐ์ธํค๋ก ์ํธํ ๋์ด์๊ณ ๊ณต๊ฐํค๋ก ๊ฒ์ฆํ ์ ์๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ฌ์ดํธ์ ์ ๋ณด์ ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ์ป์ ์ ์๋ค.
- ์๋ฒ์ ๊ณต๊ฐํค๋ก ํต์ ์ ์ฌ์ฉํ ๋น๋ฐํค๋ฅผ ์ํธํํด์ ์๋ฒ์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ์ด๋ฅผ ๊ฐ์ธํค๋ก ํ์ธํ๊ณ ์ดํ ํต์ ์ ๊ณต์ ๋ ๋น๋ฐํค๋ก ์ํธํ๋์ด ํต์ ํ๋ค.
HTTP/1.0, HTTP/1.1, HTTP/2.0
- HTTP/1.0
- keep-alive
- HTTP/1.1
- persistent connection
- pipeline
- HTTP/2.0
HTTP ๋ฉ์์ง
HTTP ๋ฉ์์ง ๊ตฌ์กฐ
start-line
header
empty-line (CRLF)
message-body
HTTP ๋ฉ์์ง ์์
# HTTP Request ์์
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
# HTTP Response ์์
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>
- start-line
- request-line (์์ฒญ ๋ฉ์์ง)
method
request-target
HTTP-version
์์ผ๋ก ๊ตฌ์ฑ- e.g.
GET
/search?q=hello&hl=ko
HTTP/1.1
- status-line (์๋ต ๋ฉ์์ง)
HTTP-version
status-code
reason-phrase
์์ผ๋ก ๊ตฌ์ฑ- e.g.
HTTP/1.1
200
OK
- request-line (์์ฒญ ๋ฉ์์ง)
- header
- ์์ฒญ ๋ฉ์์ง
- e.g. Host: www.google.com
- ์๋ต ๋ฉ์์ง
- e.g. Content-Type: text/html;charset=UTF-8
- ์์ฒญ ๋ฉ์์ง
- message-body
- ์ค์ ์ ์กํ ๋ฐ์ดํฐ
HTTP ๋ฉ์๋
GET
- ๋ฆฌ์์ค ์กฐํ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก Request Body ๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ฉฐ ๋ ๊ฑฐ์ ์์คํ ์ ๊ฒฝ์ฐ ์์ฒญ์ ๋ฐ์๋ค์ด์ง ์์ ์ ์๋ค.
- ์๋ฒ์ ์ ๋ฌํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ query string ์ ํตํด ์ ๋ฌํ๋ค.
- ์บ์ฑ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์บ์ฑ๋์ง ์๋ ์์ฒญ์ GET ์์ฒญ์ด ๋ง์ง ์์ ์ ์๋ค.
POST
- ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ๊ณผ๊ฑฐ HTTP ํต์ ์ POST ์์ฒญ์ผ๋ก ๋ฐ์ดํฐ ์์ , ์ญ์ ๋ ๋ชจ๋ ์ํํ๋ค.
- POST ์์ฒญ์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ๋๋ฌธ์ ๋ฉฑ๋ฑ์ฑ์ด ๋ณด์ฅ๋์ง ์๋๋ค.
- ๋ณดํต Request Body ์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์กํ๊ณ ์๋ฒ๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
PUT
- ๋ฆฌ์์ค ๋ฎ์ด์ฐ๊ธฐ(์์ or ์กด์ฌํ์ง ์์ผ๋ฉด ์์ฑ)์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ ์์น๋ฅผ ์๊ณ ์์ด์ผ ํ๋ค.
- ๋ฆฌ์์ค์ ์์น๋ฅผ ์๋ค๋ ์ ์์ POST ์ ์ฐจ์ด๊ฐ ์๋ค.
PATCH
- ์๋ฒ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
DELETE
- ๋ฆฌ์์ค ์ ๊ฑฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
HTTP ๋ฉ์๋์ ์์ฑ
์์
- ํธ์ถํด๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- e.g. GET
๋ฉฑ๋ฑ
- ํ ๋ฒ์ด๋ 100๋ฒ์ด๋ ํธ์ถํ ๊ฒฐ๊ณผ๊ฐ ํญ์ ๊ฐ๋ค.
- e.g GET, PUT, DELETE
์บ์๊ฐ๋ฅ
- ์๋ต ๊ฒฐ๊ณผ ๋ฆฌ์์ค๋ฅผ ์บ์ํด์ ์ฌ์ฉํด๋ ๋๋๊ฐ?
- e.g. ์ค๋ฌด์์๋ ๊ฑฐ์ GET ๋ง ์ฌ์ฉํ๋ค.
HTTP Request ๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ์์ ํฌ๊ฒ 2๊ฐ์ง
- GET - query parameter ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
- POST, PUT, PATCH - message body ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
4๊ฐ์ง ๋ฐ์ดํฐ ์ ์ก ์ํฉ
- GET - ์ ์ ๋ฐ์ดํฐ ์กฐํ
- ๋ฆฌ์์ค ๊ฒฝ๋ก๋ก ๋จ์ํ๊ฒ ์กฐํ ๊ฐ๋ฅ
- GET - ๋์ ๋ฐ์ดํฐ ์กฐํ
- query parameter ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ ๋ฌ
- HTML Form ๋ฐ์ดํฐ ์ ์ก
- Content-Type: application/x-www-form-urlencoded
- GET - start-line ์ ํฌํจํ์ฌ ์กฐํ
- POST - message body ์ ํฌํจํ์ฌ ์ ์ฅ
- HTTP API ๋ฐ์ดํฐ ์ ์ก
- HTML Form ์ ์ก ๋์ JS ๋ฅผ ํตํ ํต์ ์ ์ฌ์ฉ
- Content-Type: application/json
- GET - query parameter ๋ก ๋ฐ์ดํฐ ์ ๋ฌ
- POST, PUT, PATCH - message body ๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ์ก
HTTP API ์ค๊ณ
HTTP API - ์ปฌ๋ ์
- POST ๊ธฐ๋ฐ ๋ฑ๋ก
- ์๋ฒ๊ฐ ๋ฆฌ์์ค URI ๊ฒฐ์ ํ๋ค.
HTTP API - ์คํ ์ด
- PUT ๊ธฐ๋ฐ ๋ฑ๋ก
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค URI ๊ฒฐ์ ํ๋ค.
- ์ค๋ฌด์์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค.
HTML Form ์ฌ์ฉ
- GET, POST ๋ง ์ง์
URI ์ค๊ณ ๊ฐ๋
๋ฌธ์ (document)
- ๋จ์ผ ๊ฐ๋
(ํ์ผ ํ๋, DB row)
- e.g.
/members/100
/files/star.jpg
- e.g.
์ปฌ๋ ์ (collection)
- ์๋ฒ๊ฐ ๋ฆฌ์์ค์ URI ๋ฅผ ์์ฑ ๋ฐ ๊ด๋ฆฌ
- e.g.
/members
- e.g.
์คํ ์ด (store)
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ URI ๋ฅผ ์์ฑ ๋ฐ ๊ด๋ฆฌ
- e.g.
/files
- e.g.
์ปจํธ๋กค๋ฌ (controller), ์ปจํธ๋กค URI
- ์ ์ธ๊ฐ์ง๋ก ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ด ํ๋ก์ธ์ค ์คํ, ๋์ฌ๋ฅผ ์ง์ ์ฌ์ฉ
- e.g.
/members/{id}/delete
- e.g.
HTTP ์ํ ์ฝ๋
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ต์์ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ
1xx (Informational)
- ์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ์ค
- ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์๋ต
2xx (Successful)
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ
- 200 OK
- ์์ฒญ ์ฑ๊ณต
- 201 Created
- ์์ฒญ ์ฑ๊ณตํด์ ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋จ
- ์์ฑ๋ ๋ฆฌ์์ค์ ์๋ต์ Location ํค๋ ํ๋๋ก ์๋ณํ ์ ์๋ค.
- 202 Accepted
- ์์ฒญ์ด ์ ์ ๋์์ผ๋ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์์์
- ๋ฐฐ์น ์ฒ๋ฆฌ ๊ฐ์ ๊ณณ์์ ์ฌ์ฉ
- e.g. ์์ฒญ ์ ์ ํ 1์๊ฐ ๋ค์ ๋ฐฐ์น ํ๋ก์ธ์ค๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํจ
- ์ฌ์ค ์ ์ฌ์ฉํ์ง ์์
- 204 No Content
- ์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ์ง๋ง, ์๋ต ํ์ด๋ก๋ ๋ณธ๋ฌธ์ ๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ์์
- save ๋ฒํผ์ ๊ฒฐ๊ณผ๋ก ์๋ฌด ๋ด์ฉ์ด ์์ด๋ ๋๋ค.
- save ๋ฒํผ์ ๋๋ฌ๋ ๊ฐ์ ํ๋ฉด์ ์ ์งํด์ผ ํ๋ค.
- ๊ฒฐ๊ณผ ๋ด์ฉ์ด ์์ด๋ 204 ๋ฉ์์ง๋ง์ผ๋ก ์ฑ๊ณต์ ์ธ์ํ ์ ์๋ค.
- e.g. ์น ๋ฌธ์ ํธ์ง๊ธฐ์์ save ๋ฒํผ
- ์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ์ง๋ง, ์๋ต ํ์ด๋ก๋ ๋ณธ๋ฌธ์ ๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ์์
3xx (Redirection)
- ์์ฒญ์ ์๋ฃํ๊ธฐ ์ํด ์ ์ ์์ด์ ํธ์ ์ถ๊ฐ ์กฐ์น ํ์
- ์น ๋ธ๋ผ์ฐ์ ๋ 3xx ์๋ต์ ๊ฒฐ๊ณผ์ Location ํค๋๊ฐ ์์ผ๋ฉด, Location ์์น๋ก ์๋ ์ด๋ (๋ฆฌ๋ค์ด๋ ํธ)
- ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
- 301, 308
- ๋ฆฌ์์ค์ URI ๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋
- ์๋ URL ์ ์ฌ์ฉํ์ง ์์, ๊ฒ์ ์์ง ๋ฑ์์๋ ๋ณ๊ฒฝ ์ธ์ง
- e.g. /members โ /users
- e.g. /event โ /new-event
- ์ผ์ ๋ฆฌ๋ค์ด๋ ์
- 302, 303, 307
- ๋ฆฌ์์ค์ URI ๊ฐ ์ผ์์ ์ผ๋ก ๋ณ๊ฒฝ
- ๋ฐ๋ผ์ ๊ฒ์ ์์ง ๋ฑ์์ URL ์ ๋ณ๊ฒฝํ๋ฉด ์๋จ
- e.g. ์ฃผ๋ฌธ ์๋ฃ ํ ์ฃผ๋ฌธ ๋ด์ญ ํ๋ฉด์ผ๋ก ์ด๋
- PRG: POST/Redirect/Get
- ํน์ ๋ฆฌ๋ค์ด๋ ์
- 300, 304
- ๊ฒฐ๊ณผ ๋์ ์บ์๋ฅผ ์ฌ์ฉ
- e.g. ์์ฒญ์ผ๋ก ์บ์ ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ ์ ๋ฌ โ ์บ์ ์ฌ์ฉ ๊ฐ๋ฅ ์ ์บ์ ์ฌ์ฉํ๋๋ก ์๋ต
- 301 Moved Permanently (์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
)
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋๊ฐ GET ์ผ๋ก ๋ณํ๊ณ , ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์์
- 308 Permanent Redirect (์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
)
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ์ ์ ์ง
- 302 Found (์ผ์ ๋ฆฌ๋ค์ด๋ ์
)
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋๊ฐ GET ์ผ๋ก ๋ณํ๊ณ , ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์์
- 303 See Other (์ผ์ ๋ฆฌ๋ค์ด๋ ์
)
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋๊ฐ GET ์ผ๋ก ๋ณ๊ฒฝ
- 307 Temporary Redirect (์ผ์ ๋ฆฌ๋ค์ด๋ ์
)
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ์ ์ ์ง
- PRG: POST/Redirect/GET
- ๋ฌธ์ : POST ๋ก ์ฃผ๋ฌธ ํ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด?
- ์๋ก๊ณ ์นจ์ ๋ค์ ์์ฒญ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ณต ์ฃผ๋ฌธ์ด ๋ ์ ์์
- ํด๊ฒฐ: POST ๋ก ์ฃผ๋ฌธ ํ ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ GET ๋ฉ์๋๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์๋ก๊ณ ์นจ ํด๋ GET ์ผ๋ก ๊ฒฐ๊ณผ ํ๋ฉด๋ง ์กฐํ
- ๋ฌธ์ : POST ๋ก ์ฃผ๋ฌธ ํ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด?
- 304 Not Modified (ํน์ ๋ฆฌ๋ค์ด๋ ์
)
- ์บ์๋ฅผ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ
- ํด๋ผ์ด์ธํธ์๊ฒ ๋ฆฌ์์ค๊ฐ ์์ ๋์ง ์์์์ ์๋ ค์ค๋ค.
- ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ์ ์ ์ฅ๋ ์บ์๋ฅผ ์ฌ์ฌ์ฉํ๋ค. (์บ์๋ก ๋ฆฌ๋ค์ด๋ ํธ)
- 304 ์๋ต์ ๋ก์ปฌ ์บ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ์๋ต์ ๋ฉ์์ง ๋ฐ๋๋ฅผ ํฌํจํ๋ฉด ์๋๋ค.
- ์บ์๋ฅผ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ
4xx (Client Error)
- ํด๋ผ์ด์ธํธ ์ค๋ฅ, ์๋ชป๋ ๋ฌธ๋ฒ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
- 400 Bad Request
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ชป๋ ์์ฒญ์ ํด์ ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์
- ์์ฒญ ๊ตฌ๋ฌธ, ๋ฉ์์ง ๋ฑ๋ฑ ์ค๋ฅ
- ํด๋ผ์ด์ธํธ๋ ์์ฒญ ๋ด์ฉ์ ๊ฒํ ํ๊ณ ๋ค์ ๋ณด๋ด์ผ ํจ
- e.g. ์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ชป๋๊ฑฐ๋, API ์คํ์ด ๋ง์ง ์์ ๋
- 401 Unauthorized
- ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ๋ฆฌ์์ค์ ๋ํ ์ธ์ฆ์ด ํ์ํจ
- ์ธ์ฆ๋์ง ์์
- 401 ์ค๋ฅ ๋ฐ์ ์ ์๋ต์ WWW-Authenticate ํค๋์ ํจ๊ป ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ค๋ช
- 403 Forbidden
- ์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ์ง๋ง ์น์ธ์ ๊ฑฐ๋ถํจ
- ์ฃผ๋ก ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช
์ ์์ง๋ง, ์ ๊ทผ ๊ถํ์ด ๋ถ์ถฉ๋ถํ ๊ฒฝ์ฐ
- e.g. ์ด๋๋ฏผ ๋ฑ๊ธ์ด ์๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ์ง๋ง, ์ด๋๋ฏผ ๋ฑ๊ธ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ
- 404 Not Found
- ์์ฒญ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์
- ์์ฒญ ๋ฆฌ์์ค๊ฐ ์๋ฒ์ ์์
- ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ถํ์ด ๋ถ์กฑํ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ์จ๊ธฐ๊ณ ์ถ์ ๋
5xx (Server Error)
- ์๋ฒ ์ค๋ฅ, ์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํจ
- ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฌ์๋ ํ๋ฉด ์ฑ๊ณตํ ์๋ ์์
- 500 Internal Server Error
- ์๋ฒ ๋ฌธ์ ๋ก ์ค๋ฅ ๋ฐ์, ์ ๋งคํ๋ฉด 500 ์ค๋ฅ
- 503 Service Unavailable
- ์๋น์ค ์ด์ฉ ๋ถ๊ฐ
- ์๋ฒ๊ฐ ์ผ์์ ์ธ ๊ณผ๋ถํ ๋๋ ์์ ๋ ์์ ์ผ๋ก ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์
- Retry-After ํค๋ ํ๋๋ก ์ผ๋ง๋ค์ ๋ณต๊ตฌ๋๋์ง ๋ณด๋ผ ์๋ ์์