๐ 2XX (Successful) ์ํ ์ฝ๋ - ์ด์ ๋ฆฌ ๋ชจ์
2XX Success
2xx ๋ฒ๋์ ์ํ ์ฝ๋๋ค์ ์์ฒญ์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
๋จ์ํ ์์ฒญ์ ๋ํ ์ฑ๊ณต์ ๋ํ๋ด์ง๋ง, ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ ํ ํ์์ ๋ํ ์ฑ๊ณต์ธ์ง์ ๋ํ ๊ฒ์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์, ์๋ต์ ๋ฐ๊ณ ํด๋ผ์ด์ธํธ๊ฐ ์ทจํ ํ์๋ฅผ ๊ฒฐ์ ํ๋๋ฐ ์ค์ํ๋ฉด์๋ ์ ๋ง ์์ฃผ ๋ณด๊ฒ๋ ์ํ ์ฝ๋์ผ ๊ฒ์ด๋ค.
200 OK
- OK โข ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฒ๊ฐ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ
- ๋ฉ์ธ์ง ๋ฐ๋์๋ HTTP ๋ฉ์๋์๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ํฌํจ
GET: ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์๊ณ ๋ฉ์์ง ๋ฐ๋์ ๋ค์ด์์POST: ๋ฆฌ์์ค๊ฐ ๋ช ์ํ๋ ํ๋์ ๊ฒฐ๊ณผ๊ฐ ๋ฉ์์ง ๋ฐ๋์ ๋ค์ด์์PUT: 200 OK (์์ ์๋ฃ) / 201 Created (์์ ํ ๊ฐ์ฒด๊ฐ ์์ด ์๋ก ์ ๋ก๋)DELETE: 200 OK (์ญ์ ์๋ฃ) / 204 No Content (์ญ์ ํ ๊ฐ์ฒด๊ฐ ์์๋)HEAD: ๊ฐ์ฒด ํค๋๊ฐ ๋ฉ์์ง ๋ฐ๋์ ๋ค์ด์์TRACE: ์ต์ข ์๋ฒ๊ฐ ์์ฒญ๋ฐ์ ๋ฉ์์ง๊ฐ ๋ฐ๋์ ๋ค์ด์์
- 200 ์๋ต์ ์บ์ฌ๋ ์ ์๋ค.
๐ 200 ์ํ์ฝ๋ ํ๋ฆ ์์
- ํด๋ผ์ด์ธํธ์์ '/members/100' ๋ฆฌ์์ค๋ฅผ GET ์ผ๋ก ์์ฒญ
- ์๋ฒ์์ ๊ทธ์ ๋ํ ์๋ต์ ์ฑ๊ณต์ ์ผ๋ก ๋ณด๋ด๋ฉด์ 200 OK ์ ์ํ์ฝ๋๋ฅผ ํจ๊ป ์ ์ก
- ์๋ต ๋ฉ์ธ์ง ๋ฐ๋์๋ HTTP ๋ฉ์๋ ์์ฒญ์ ๋ํ ์๋ต ๋ฐ์ดํฐ(username, age)๊ฐ ๋ค์ด์์
201 Created
- Created โข ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฒ๊ฐ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์๊น
- ์๋ต ํค๋์๋ ์์ฑ๋ ๋ฆฌ์์ค์ ๋ํ ์ค๋ช ๊ณผ ๋งํฌ๋ฅผ ์ ๊ณต
- 201 ์ํ ์ฝ๋๋ POST, PUT ์์ฒญ์ ๋ํ ์๋ต์ ์ฃผ๋ก ์ด์ฉ๋๋ค.
- POST : ๊ฐ์ฒด๋ฅผ ์๋ก ์์ฑ
- PUT : ๋ง์ผ ์์ ํ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ์๋ก ์์ฑ
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ด๋ค์ก๋ค๋ ์๋ฏธ ์์ฒด๋ 200๊ณผ ๋์ผํ๋ฐ, ์ฑ๊ณต๊ณผ ๋์์ ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋์๋ค๋ ์๋ฏธ๋ฅผ ํฌํจํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
์์ฑ ์์ฒญ์ ๋ํด 200 OK๋ก ์๋ตํด๋ ๋๊ธด ํ์ง๋ง, ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์ฒญ์ ๋ํด์ ์๋ฒ๋ ๋ฐ๋์ ์ ํํ ์๋ฏธ๋ฅผ ์ํด ํด๋น ์ฝ๋๋ก ์๋ตํ๋ ๊ฒ์ด ์ข๋ค.
๐ 201 ์ํ์ฝ๋ ํ๋ฆ ์์
- ํด๋ผ์ด์ธํธ๊ฐ '/members' ์ปฌ๋ ์ ์ POST ๋ก ์ ๊ท ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ์์ฒญ์ ์ ๋ฌ
- ์๋ฒ๊ฐ ์ ๊ท ๋ฆฌ์์ค๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์์ฑํ ๋ค 201 Created ์ํ์ฝ๋๋ฅผ ๋ด์ ์ ์ก
Location/Content-Locationํค๋ : ์์ฑ๋ ๋ฆฌ์์ค์ ๋ํ ์ฐธ์กฐ URL- ๋ฉ์ธ์ง ๋ฐ๋์๋ ์๋ก ์์ฑ๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์์
202 Accepted
- Accepted โข ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ์์ ์ด๋, ์๋ฒ๊ฐ ์์ง ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ์ง ๋ชปํด์ ์ผ๋จ ์์๋ค๋ ํ์
- ๋ณดํต ์์ฒญ์ด ์ ์์ ์ด๋ฉด ์์ ์ ์ฑ๊ณต/์คํจ๋ก ์๋ ค์ฃผ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋, ์์ฒญ ์ฒ๋ฆฌ ์์ฒด๊ฐ ๋ฌด๊ฑฐ์ ์ค๋ ๊ฑธ๋ฆด๊ฒฝ์ฐ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ์ฌ ์๋ฃ๋๋ฉด ๋์ค์ ์๋ ค์ฃผ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
- ์๋ต ๋ณธ๋ฌธ์๋ ์์ฒญ์ ๋ํ ์ํ์ ์์ฒญ์ ์ฒ๋ฆฌ๊ฐ ์ธ์ ์๋ฃ๋ ๊ฒ์ธ์ง์ ๋ํ ์ถ์ (ํน์ ๊ทธ์ ๋ํ ์ ๋ณด๋ฅผ ์ด๋์ ์ป์ ์ ์๋์ง)์ ํฌํจํด์ผ ํ๋ค.
๐ 202 ์ํ์ฝ๋ ์ดํดํ๊ธฐ
202 ์ํ ์ฝ๋๋ฅผ ๋ณด๋ค ์ดํดํ๊ธฐ ์ํด ๋งฅ๋๋ ๋์์ ํ๋ฒ๊ฑฐ๋ฅผ ์ฃผ๋ฌธํ๋ ํ๋ก์ธ์ค ์ค์ํ ์์๋ฅผ ๋ค์ด๋ณผ ์ ์๋ค.
- ๊ณ ๊ฐ(ํด๋ผ์ด์ธํธ)์ ์นด์ดํฐ ์ง์(URI)์๊ฒ ํ๋ฒ๊ฑฐ ์ฃผ๋ฌธ(HTTP Request)๋ฅผ ํ๋ค.
- ๊ทธ๋ฌ๋ฉด ์ฃผ๋ฌธ ์์ฒญ์ ๋ฐ์ ์ง์์ด ํด๋น ์ฃผ๋ฌธ์ ์ฃผ๋ฐฉ์ฅ์๊ฒ ์ ๋ฌํ๋ค.
- ์ฃผ๋ฐฉ์ฅ์ ํ๋ฒ๊ฑฐ๋ฅผ ๋ง๋ค๊ธฐ ์์ํ๋ค. (๋น๋๊ธฐ)
- ์ง์์ ๋ฒํธํ(์์ ์๋ณ์)๋ฅผ ๊ณ ๊ฐ์๊ฒ ์ฃผ๊ณ (202 ์๋ต) ๋ค์ ๊ณ ๊ฐ์ ์ฃผ๋ฌธ์ ๋ฐ๋๋ค.
์ฆ, ๋จ์ํ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์๋์๋ค๋ ์๋ฏธ๋ก ๋ฒํธํ๋ฅผ ์ฃผ๋ฏ์ด 202 ์ํ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ค๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋๋ ์์ (ํ๋ฒ๊ฑฐ๊ฐ ๋ค ๋ง๋ค์ด์ง)์ ์๋ฃ ์ฌ๋ถ๋ ์ธ์ ํ์ธํ ๊น?
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ์๋ฃ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ Callback ๊ณผ Polling ๋ ๊ฐ์ง๊ฐ ์๋ค.
- ์ฝ๋ฐฑ(Callback)์ ์๋ฒ๊ฐ ์์ ์ด ์๋ฃ๋๋ฉด ์์์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ์ด๋ค. ํ๋ฒ๊ฑฐ๊ฐ ๋ง๋ค์ด์ง๋ฉด ์ง์(Callback)์ด ๋ฒํธ(์์ ์๋ณ์)๋ฅผ ๋ถ๋ฅด๊ณ ๊ณ ๊ฐ์ ํ๋ฒ๊ฑฐ๋ฅผ ๋ฐ์๊ฐ๋ค.
- ํด๋ง(Polling)์ ํด๋ผ์ด์ธํธ๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ํด๋น ์์ ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์กฐํํ๋ ๊ฒ์ด๋ค. ๊ณ ๊ฐ์ ๋ฒํธํ(์์ ์๋ณ์)๋ฅผ ๋ค๊ณ ์ง์(Polling)์๊ฒ ๊ฐ์ ํ๋ฒ๊ฑฐ ์ฃผ๋ฌธ์ด ์๋ฃ๋์๋์ง ์ผ์ ์๊ฐ๋ง๋ค ๋ฌผ์ด๋ณด๊ณ ์๋ฃ๋๋ฉด ํ๋ฒ๊ฑฐ๋ฅผ ๋ฐ์๊ฐ๋ค.
๐ 202 ์ํ์ฝ๋ ํ๋ฆ ์์ (Polling)
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ XML ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด POST ์์ฒญ ํ๋ค.
2. ์๋ฒ๋ ์์ฒญ์ด ์น์ธ๋์๊ณ ์์ง ์ฒ๋ฆฌ์ค์ด๋ผ 202 ์๋ต์ ํ๋ค.
3. ํด๋ผ์ด์ธํธ๊ฐ GET ์์ฒญ์ ํ๋ค.
4. ์๋ฒ๋ ์์ง ์ฒ๋ฆฌ๊ฐ ๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ํ ์์ฒญ์ ๋ํ ์๋ต์ ํ๋ค. (๋๊ฐ์ด 202)
3. ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฐจ GET ์์ฒญ์ ํ๋ค.
4. ์์ฒญ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ์๋ฒ๋ ์ํ ์์ฒญ์ ๋ํ 200 ์ฑ๊ณต ์๋ต์ ํ๋ค.
5. ํด๋ผ์ด์ธํธ๋ 200 ์ํ ์ฝ๋๋ฅผ ์์ ํ ํ ํด๋ง์ ์ค์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ์กฐ์น๋ฅผ ์ทจํ๋ค.
203 Non-Authoritative Information
- Non Authoritative Information โข ํค๋์ ๋ค์ด์๋ ์ ๋ณด๊ฐ ์๋ ์๋ฒ๊ฐ ์๋ ํ๋ก์์ ์ฌ๋ณธ์์ ์์ ์ ๋ขฐ ํ ์ ์๋ ์ ๋ณด๋ฅผ ์๋ฏธ
- ์น์ฌ์ดํธ๊ฐ ํ๋ก์ ์๋ฒ(CDN ๋๋ VPN ๋๋ ๊ธฐํ)๋ฅผ ์ฌ์ฉํ ๋ ๋ฐํ๋๋ ์ํ ์ฝ๋
- ์ฆ, ์์ฒญ์ ์ฑ๊ณตํ์ง๋ง payload๊ฐ ์๋ณธ ์๋ฒ์ 200(OK) ์๋ต์ด ๋ณํ ํ๋ก์์ ์ํด ์์ ๋์์์ ๋ํ๋ธ๋ค.
- ํ๋ก์๊ฐ ๋ฆฌ์์ค์ ์ฌ๋ณธ์ ๊ฐ๊ณ ์์ง๋ง, ๋ฆฌ์์ค์ ๋ํ ๋ฉํ ์ ๋ณด(ํค๋)๋ฅผ ๊ฒ์ฆํ์ง ๋ชปํ(ํน์ ์ ํ) ๊ฒฝ์ฐ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ ์ ์๋ค.
- ๋จ, 203(์ ๋ขฐ ํ ์์๋ ์ ๋ณด) ์ํ ์ฝ๋ ๋์ 214(๋ณํ์ด ์ ์ฉ๋ ๊ฒฝ๊ณ ) ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.
204 No Content
- No Content โข ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ์์ ์ด๋ค. ํ์ง๋ง ์ ๊ณตํ ์ปจํ ์ธ ๊ฐ ์๋ค.
- ์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ์ง๋ง, ์๋ต ํ์ด๋ก๋ ๋ณธ๋ฌธ์ ๋ด์ ๋ฐ์ดํฐ๊ฐ ์์์ ์๋ฏธํ๋ค.
- ์ ๋์ ์ธ ๊ฒ์ ์๋์ง๋ง ๋ค์ ๋ฉ์๋์ ์ฌ์ฉ๋ ์ ์๋ค.
POST: ๋ฐ์ดํฐ ์ถ๊ฐ ์์ฒญ์ ํ๊ณ ๋ฐ์ดํฐ ์๋ต์ ํ์์์๋PUT: ์์ ์์ ์์ฒญ์ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ์ฌ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ์์ ๋DELETE: ์ญ์ ํ ์์์ด ์์ด ์๋ต์ด ๋ฌด์๋ฏธ ํ ๋ (์ฒ๋ฆฌ ์์ฒด๋ ์ฑ๊ณต์ด๋ 2XX ๋ฒ๋ ์ด์ง๋ง ์์์ด ์ญ์ ๋์ง๋ ์์์ผ๋ ์ด๋ฐ ์ ๋งค๋ชจํธํ ์ํฉ์ ์ฌ์ฉ)
- ์ด๋ฐ ๋ชจํธ์ฑ ๋๋ฌธ์ 204 ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ HTTP API๋ ํํ์ง ์๋ค.
- 204 ์๋ต์ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์ํ ์ ์๋ค.
๐ 204 ์ํ์ฝ๋ ํ๋ฆ ์์
204๋ฅผ ์ดํดํ๋ ์ข์ ์๋ก๋ ๋ฌธ์ ํธ์ง๊ธฐ์ SAVE ๋ฒํผ์ ๋ค ์ ์๋ค. ํ์ฌ๊น์ง ์์ฑํ ๋ด์ฉ์ ์ ์ฅ๋ง ํ๊ณ ๋ณ๋ค๋ฅธ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํ์๊ฐ ์๊ณ ํ์ด์ง ์ ํ๋ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์, ์๋ฒ๋ SAVE ์ ๊ฒฐ๊ณผ๋ก ์ด๋ ํ ๋ฐ์ดํฐ๋ ์ ์กํด์ค ํ์๊ฐ ์๋ค.
์ฃผ์ํ ์ ์ 200์ผ๋ก ์๋ตํ๊ณ body์ null, {}, [] ๋ฑ์ผ๋ก ๋น ๋ฐ์ดํฐ๋ก ์๋ตํ๋ ๊ฒ๊ณผ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๋ค. 204์ ๊ฒฝ์ฐ ์์ HTTP ์๋ต body๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ๋ค.
205 Reset Content
- Reset Content โข ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก ๊ณ ์นจํ๋ผ๋ ์๋ฏธ
- ํ์ฌ ํ์ด์ง์ ์๋ HTML ํผ์ ์ฑ์์ง ๋ชจ๋ ๊ฐ์ ๋น์ฐ๊ฑฐ๋, ์บ๋ฒ์ค ์ํ๋ฅผ ์ฌ์ค์ ํ๊ฑฐ๋ ํ ๋, ๋ธ๋ผ์ฐ์ ์๊ฒ ํ๋ฉด์ UI๋ฅผ ์๋ก ๊ณ ์น๋๋ก ์ง์ํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ์ฝ๋๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
- PUT ๋ฉ์๋ ๋์๊ณผ ํจ๊ป ์ด์ฉ๋ ์ ์๋ค.
206 Partial Content
- Partial Content โข ์์ฒญ๋ ๋ฆฌ์์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๊ฒ์๋์์ง๋ง ๋ฆฌ์์ค ๋ฒ์์ ์ผ๋ถ๋ง ๋ฐํ๋๊ณ ์์์ ๋ํ๋
- ์ด๋ฏธ์ง๋ ๋์์๊ฐ์ ๋์ฉ๋ ๋ฏธ๋์ด ํ์ผ์ ์์ฒญํ์์ ๋, ์์ง ์์ ํ ๋ก๋ ๋์ง ์์์์๋ ํน์ ๋ฒ์์ ๋ํ ์์ฒญ์ ํ ๋ ์ฐ์ธ๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฒ๋ ์ ์ฒด ํ์ผ ๋์ ์์ฒญ๋ ๋ฒ์๋ง ๋ฐํํ๋ค.
- ๋์ฉ๋ ํ์ผ์ ์กฐ๊ฐ์ผ๋ก ๋ค์ด๋ก๋ํ๊ฑฐ๋ ๋ฏธ๋์ด ํ์ผ์ ์คํธ๋ฆฌ๋ฐํ ๋ ์ ์ฉํ ์ ์๋ค.
- ํด๋ผ์ด์ธํธ์์
Rangeํค๋๋ฅผ ํตํด ์ด ์ํ ์ฝ๋๋ฅผ ์๋ต ๋ฐ์ ์ ์๋ค.
๐ 206 ์ํ์ฝ๋ ํ๋ฆ ์์
์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์์ ๋์ฉ๋ ๋์์ ํ์ผ์ ๋ค์ด๋ก๋ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ๊ทธ๋ฐ๋ฐ ์ด ๊ฒฝ์ฐ ํ์ผ ์์ฒด๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ๋ค์ด๋ก๋ ํ๋ก์ธ์ค์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก, ํด๋ผ์ด์ธํธ๋ ํํธ๋ณ๋ก ๋๋์ด์ ๋ฒ์ ์์ฒญ/์๋ต ๋ฐ์ผ๋ ค๊ณ ํ๋ค. (์คํธ๋ฆฌ๋ฐ)
1. ํด๋ผ์ด์ธํธ๋ ํด๋น ๊ฒฝ๋ก๋ก GET ์์ฒญ์ ๋ณด๋ธ๋ค. ์ด๋ Range ํค๋๋ฅผ ํตํด ์์ ๋ฒ์๋ฅผ ์๋ฆฐ๋ค.
2. ์๋ฒ๋ ํ์ฌ ๋ค์ด๋ก๋๋ ๋ฒ์์ ๋ํ ์๋ต์ ํด์ค๋ค.
- ์๋ต์๋
Content-Range์Dateํค๋๋ฅผ ๋ฐ๋์ ํฌํจํด์ผ ํ๋ฉฐ,Etag์Content-Location์ค ํ๋์ ํค๋๋ ๋ฐ๋์ ํฌํจํด์ผ ํ๋ค. Content-Range: bytes 0-1023/2048: ์ฌ๊ธฐ์ 2048๋ ์ ์ฒด ํ์ผ์ ์ด ๊ธธ์ด(๋ฐ์ดํธ)์ด๊ณ , 0-1024์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ๋ถ๋ถ ์์ ๋ฐ์ดํฐ์ธ ๋ฐ์ดํธ ๋ฒ์์ด๋ค.- ๋ง์ผ ์ฌ๋ฌ ์ฝํ
์ธ ๋ฒ์๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ ๋ค์ ์์ ๊ฐ์ด ๊ฐ ๋ฒ์๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ์ง์ ํ ์ ์๋ค.
Content-Range: bytes 0-500/1234, 1000-1500/1234
3. ํด๋ผ์ด์ธํธ๋ ๋ ๋ฒ์งธ ์์ฒญ์ ๋ค์ ๋ณด๋ด๊ณ ์๋ฒ์ Range ํค๋๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ ์์ ๋ฒ์๋ฅผ ์๋ฆฐ๋ค.
4. ์๋ฒ๋ ์ด์ ๋ํ ์๋ต์ ํด์ค๋ค.
207 Multi-Status
- Multi Status โข ์ฌ๋ฌ ์๋ต์ด ํผํฉ๋์ด ์์๋ ๋์ค๋ ์ํ์ฝ๋
- ์ฆ, ์์ฒญ์ด ๋ค์ํ ๋ฆฌ์์ค์ ๋ํ ์ฌ๋ฌ๊ฐ์ ์๋ต์ 207 Multi Status ๋ฅผ ํตํด ํ๋ฒ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ผ๋ก ๋ณด๋ฉด ๋๋ค.
- ์ด ์ฌ๋ฌ๊ฐ์ ์๋ต์ ๊ธฐ๋ณธ์ ์ผ๋ก XML๋ก ์ด๋ฃจ์ด์ ธ ์์ด, ํ์ ์์ฒญ ์์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ์ ๊ฐ๋ณ ์๋ต ์ฝ๋๋ฅผ ํฌํจํ ์ ์๋ค. (JSON์ผ๋ก๋ ์๋ต ์ค์ ์ด ๊ฐ๋ฅ)
- ํด๋น ์ฝ๋๋ WebDAV(Web Distributed Authoring and Vesioning)์ ์ด์ฉ๋๋ค.
[ WebDAV ๋? ]
WebDAV(Web Distributed Authoring and Vesioning)๋ ํ์ดํผํ ์คํธ ์ ์ก ํ๋กํ ์ฝ์ ํ์ฅ์ผ๋ก, ์น ์๋ฒ์ ์ ์ฅ๋ ๋ฌธ์์ ํ์ผ์ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ ๋งค๊ฐ์ฒด๋ก ๋ง๋ค์ด์, ํธ์งํ๊ณ ๊ด๋ฆฌํ๋ ์ฌ์ฉ์๋ค ์ฌ์ด์ ํ์ ์ ์์ฝ๊ฒ ๋ง๋ค์ด ์ค๋ค.
๐ 207 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ XML ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ๊ฒ์ํ๊ธฐ์ํด POST ์์ฒญํ๋ค (๋จ ์ด ์์ ์๋ 3๊ฐ์ ๋ ๋ฆฝ์ ์ธ ๋ฆฌ์์ค๊ฐ ํ์)
2. ๋ฐ๋ผ์ ์๋ฒ๋ ๊ฐ ๋ฆฌ์์ค์์ ์ํธ ์์ฉ ๊ฒฐ๊ณผ๋ฅผ ํ์ํ๋ ๋ชฉ๋ก์ ๋ฐํํ๋ค.
3. ๋ฉ์ธ์ง ๋ณธ๋ฌธ์ ๋ณด๋ฉด, ์ฒ์ ๋ ๋ฆฌ์์ค์ ์ํธ ์์ฉ์ ์ฑ๊ณต์ ์ด์ง๋ง ์ธ ๋ฒ์งธ ๋ฆฌ์์ค๋ ์ ๊ฒจ ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๊ฒ์ด ์ฑ๊ณต์ธ์ง ์คํจ์ธ์ง ๊ฒฐ์ ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ํ๋ํ๋ ๊ฒ์ ํด๋ผ์ด์ธํธ์ ๋ชซ์ด๋ค.
208 Already Reported
- Already Reported โข ์ด๋ฏธ ์์์ ์ด๊ฑฐ๋์์์ ์๋ฏธ
- ์ฆ, ์์์ ์ด๋ฏธ ๋ณด๊ณ ๋ ์ ๋ณด์ด๋๊น, ์ด ์ ๋ณด๋ฅผ ๋ค์ ํฌํจํ์ง ์์์ ์๋ฏธํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ์ด์ ์ ์ ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๋ฉด ๋๋ค.
PROPFIND์ด๋ผ๋ HTTP ๋ฉ์๋์ ๋ํ ์๋ต ์์ฑ์ผ๋ก์จ ์ฐ์ด๋ฉฐ, ๋์ผ ์ปฌ๋ ์ ์ผ๋ก ๋ฐ์ธ๋๋ ๋ณต์์ ๋ด๋ถ ๋ฉค๋ฒ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ด๊ฑฐํ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.- ๋ํ 208 ์ํ ์ฝ๋๋ HTTP ์๋ต ๋ฉ์ธ์ง๋ก ๋ํ๋์ง ์๊ณ , ํ์ด๋ก๋ ๋ณธ๋ฌธ์๋ง ์ฐ์ด๋ ํน์ฑ์ด ์๋ค.
- ํด๋น ์ฝ๋๋ WebDAV(Web Distributed Authoring and Vesioning)์ ์ด์ฉ๋๋ค.
[ WebDAV ํ์ฅ ๋ฉ์๋ ]COPY- ํ์ผ์ ๋ค๋ฅธ ์์น ๋ณต์ฌ ์ ์ฌ์ฉํ๋ค.MOVE- ํ์ผ ์ด๋ ๋ฐ ํ์ผ ํ์ฅ์ ๋ณ๊ฒฝ ์ ์ฌ์ฉํ๋ค.LINK- ๋ค๋ฅธ ์์น๋ก์ ๋งํฌ๋ ๋งํฌ ์์ฑ ์ ์ฌ์ฉํ๋ค.UNLINK- LINK์ ์ํด ์์ฑ๋ ๋งํฌ ์ญ์ ์ ์ฌ์ฉํ๋ค.CONNECT- ์น ์๋ฒ์ ํ๋ก์ ๊ธฐ๋ฅ์ ์์ฒญํ ๋ ์ฌ์ฉํ๋ค.PROPFIND- ๋ฆฌ์์ค๋ฅผ ์ํ ์์ฑ์ ๊ฒ์ํ๋ค. ์น์ ํ์ผ ๋ชฉ๋ก๊ณผ ์์ฑ์ ๊ฒ์ํ๋ค.PROPPATCH- ๋ฆฌ์์ค์ ๋ํ ์์ฑ์ ๋ณ๊ฒฝํ๋ ๋ฉ์๋MKCOL- ์ปฌ๋ ์ (๋๋ ํ ๋ฆฌ , ํด๋)์ ์์ ฉํ๋ ๋ฉ์๋LOCK- ๋ฆฌ์์ค์ Overwrite ๋ฐฉ์ง๋ฅผ ์ํ LOCK์ ๊ฑด๋ค.UNLOCK- ๋ฆฌ์์ค์ Overwrite ๋ฐฉ์ง๋ฅผ ์ํ LOCK์ ๊ฑด๋ค.
๐ 208 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์น์ ํ์ผ ๋ชฉ๋ก๊ณผ ์์ฑ์ ๊ฒ์ํ๋ PROFIND ์์ฒญ์ ๋ณด๋ธ๋ค.
2. ์๋ฒ๋ ํ์ผ ๋ชฉ๋ก์ด ์ฌ๋ฌ๊ฐ๋ผ์ ์์์ ๋ฐฐ์ด 207 ์๋ต ์ฝ๋๋ฅผ ์์ ํ๋ค.
3. ์ด๋ ๊ฐ ์๋ต์ ๋ํ resource๊ฐ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ ์ด๋ฏธ ์ด๊ฑฐ๋ ๊ฒ์ ์ธ์ํ๊ณ 208 ์๋ต ์ฝ๋๋ฅผ ๋ณด๋ธ๋ค.
218 This is fine
- This is fine โข ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง ์ฌ๊ธด(apache ์๋ฒ) ๊ด์ฐฎ์~ ์๋ฏธ
- ์ํ์น(Apache) ์น ์๋ฒ ์์ ์ฌ์ฉ๋๋ ๋น๊ณต์ HTTP ์๋ต ์ฝ๋
- ๊ทธ๋์ 218 ์ํ ์ฝ๋๊ฐ ์์ ๋๋ฉด, ํด๋ผ์ด์ธํธ๋ Apache ์น ์๋ฒ์ ํต์ ํ๊ณ ์์์ ์ดํดํ ์ ์๋ค.
- ๋ณดํต ์ค๋ฅ ์ํ ์ฝ๋(4XX ๋๋ 5XX)์ ๋ํด์ ํด๋ผ์ด์ธํธ๋ ์ค๋ฅ ํ์ด์ง๋ฅผ ํ์ํ์ง๋ง, 218 ์๋ต์ ์ด์ฉํ๋ฉด ์ค๋ฅ ํ์ด์ง๋ฅผ ํ์ํ์ง ์๊ณ Apache๊ฐ ํ๋ผ๋ ๋๋ก ์ค๋ฅ์ ๋ํ ํ์๊ฐ ๋ณํ๋ ์ ์๋ค.
์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ ์ ์ดํดํ ์ ์์ ๊ฒ์ด๋ค. ์ง(์๋ฒ)๊ฐ ํ์ฌ(์ค๋ฅ)๊ฐ ๋๊ณ ์๋๋ฐ ๊ฐ(์ํ์น)๊ฐ 218(์ฌ๊ธด ๊ด์ฐฎ์) ๋ผ๊ณ ํ์ง๊ฑฐ๋ฆฌ ํ๋ ๊ฒ์ผ๋ก ๋ณด๋ฉด ๋๋ค.
226 IM Used
- IM Used โข ์๋ฒ๊ฐ GET ์์ฒญ์ ๋ํ ์๋ต ์๋ฌด๋ฅผ ๋คํ๋ค๋ ์๋ฏธ
- ์ฆ, ์์ฒญ์ด ํ์ฌ ์ํ์ ๋ฐ์ฉ๋์์์ ๋ปํ๋ ๊ฒ์ผ๋ก ๋ณด๋ฉด ๋๋ค.
- HTTP Delta Encoding ๊ธฐ๋ฒ์ ์ด์ฉํ๋ฉด ๋ฐํ๋๋ ์ํ ์ฝ๋์ด๋ค.
- ์ฌ๊ธฐ์ IM์ I am ์ ๋ํ๋ด๋๊ฒ์ด ์๋ Instance Manipulation(์ธ์คํด์ค ์กฐ์)์ ์ฝ์์ด๋ค.
๐ HTTP Delta Encoding
์๋ฅผ ๋ค์ด ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์บ์ํด ๋์๋ค๊ณ ๊ฐ์ ํ์.
๋ณดํต ๋ฆฌ์์ค๊ฐ ์๋ฒ ์ธก์์ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ, ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ธก์ ์์ฒญ์ ๋ํด์ ๋ฆฌ์์ค ๋ณต์ฌ๋ณธ์ ์บ์ฑํด ๋์์ง๋ง ์์ ๋์๊ธฐ ๋๋ฌธ์ ์ ๋ฆฌ์์ค๋ฅผ ๋ค์ ๋ณด๋ด๊ฒ ๋๋ค. ํ์ง๋ง ์์ ๋ถ๋ถ์ด ์ฌ์ํ ์์ ๋ถ๋ถ์ผ ๊ฒฝ์ฐ, ์ ์ฒด ์ ๋ฒ์ ์ ๋ค์ ๋ณด๋ด๋ ๊ฑด ์ด์ฐ๋ณด๋ฉด ์ฝ๊ฐ ๋ญ๋น ์ผ์๋ ์๋ค. ๋ฐ๋ผ์ ์์์ ์ ์ ์๊ฐํ HTTP Delta Encoding ๊ธฐ๋ฒ์ ์ด์ฉํ๋ฉด ์๋ฒ๊ฐ ์ผ๋ถ ํจ์น ํ์ ํน์ diff ํ์์ ๋ณ๊ฒฝ ์ฌํญ๋ง ๋ค์ ๋ณด๋ด๋ ์์ผ๋ก ์ฒ๋ฆฌ ํ ์ ์๋ค. (ํธ๋ํฝ ์ต์ ํ)
๋ง์ผ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฅผ ์์ฒญํ๊ณ , ์๋ฒ๊ฐ Delta ์ธ์ฝ๋ฉ์ ์ง์ํ๋ ๊ฒฝ์ฐ 226 IM Used ์ํ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ฃผ๊ฒ ๋๋ค. ๋ง์ผ ์๋ฒ๊ฐ 200 OK ๋ฅผ ๋ณด๋ธ๋ค๋ฉด ์๋ฒ๊ฐ ์ธ์ฝ๋ฉ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์๋๋ค๋ ๋ง์ด ๋๋ค.
[HTTP] ๐ ์น ๋ธ๋ผ์ฐ์ ์ Cache ์ ๋ต & ํค๋ ๋ค๋ฃจ๊ธฐ
์น๋ธ๋ผ์ฐ์ ์ ์บ์(Cache) ์๋ฆฌ ์ปดํจํฐ ์ด์์ฒด์ ์์์ ์บ์(Cache)๋ ์ฃผ๊ธฐ์ต์ฅ์น์์ ์์ฃผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ํ๋๋์คํฌ๋ก๋ถํฐ ๊ฐ์ ธ์ค๋๋ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์บ์ ์ ์ฅ์์ ์์
inpa.tistory.com
๐ 226 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ PDF๋ฅผ ์ต์ด ์์ฒญํ๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๋ Accept-encoding ํค๋๋ฅผ ์ด์ฉํ์ฌ gzip ์์ถ์ผ๋ก ๋ณด๋ด๋ผ๊ณ ์์ฒญํ๋ค.
2. ์๋ฒ๋ gzip์ผ๋ก ์ธ์ฝ๋ฉ๋ PDF ํ์ผ๊ณผ ํ์ผ์ ์์ ์ํ๋ฅผ ์๋ณํ๋ Etag ํค๋ ๊ทธ๋ฆฌ๊ณ 200 OK ์ํ ์ฝ๋ ์๋ต์ ํ๋ค.
3. ํด๋ผ์ด์ธํธ๋ ์ต์ ํ๋ฅผ ์ํด ์ด PDF๋ฅผ ์บ์ฑํด ๋๋๋ค.
4. ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ PDF๋ฅผ ์ฌ์ฐจ ์์ฒญํ๋ค. ์ด๋ If-none-match ํค๋๋ฅผ ํตํด PDF๊ฐ ์๋ฒ์์ ์์ ๋์๋์ง ํ์ธ์ฌํญ์ ๋ณด๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ A-IM ํค๋๋ฅผ ์ง์ ํ์ฌ Delta ์ธ์ฝ๋ฉ ํ์์ ํ์ผ์ ์๋ฝํ ์ํฅ์ด ์์์ ์๋ฆฐ๋ค.
5. ์๋ฒ๋ If-none-match ํค๋์ Etag ํค๋์ ๊ฐ์ ๋น๊ตํ์ฌ ํ์ผ ์์ ์ ๋ฌด๋ฅผ ํ๋จํ๋ค.
5-1. ๋ง์ฝ PDF๊ฐ ์์ ๋์ง ์์๋ค๋ฉด 304 Not Modified๋ฅผ ์๋ตํ๊ณ ํด๋ผ์ด์ธํธ๋ ์บ์ฑํด๋์๊ฑธ ๊ฐ์ ธ๋ค ์ฐ๊ฒ ๋๋ค.
5-2. ๋ง์ฝ PDF๊ฐ ์์ ๋์๋ค๋ฉด 226 IM Used์ ํจ๊ป diff ๋ณ๊ฒฝ์ฌํญ ๋ถ๋ถ๋ง ๋ณด๋ด์ฃผ๊ฒ๋๋ค. (๋ง์ผ ์๋ฒ๊ฐ Delta ์ธ์ฝ๋ฉ์ ์ง์ํ์ง ์๋๋ค๋ฉด ์ PDF์ ํจ๊ป 200 OK๋ฅผ ์๋ตํ๊ฒ ๋๋ค)
# ์ฐธ๊ณ ์๋ฃ
๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ - ๊น์ํ
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
https://debugmyweb.com/status_code/203-non-authoritative-information/
https://robotecture.com/tech/206-http-status-code-what-it-is-and-how-to-use-it/
https://feel5ny.github.io/2019/08/17/HTTP_003_03/
https://www.bloggingbig.com/http-status/http-status-code-207-multi-status/
https://http.dev/status