๐ 4XX (Client Error) ์ํ ์ฝ๋ - ์ด์ ๋ฆฌ ๋ชจ์
4XX Client Error
4xx ๋ฒ๋์ ์ํ ์ฝ๋๋ค์ ํด๋ผ์ด์ธํธ ์ค๋ฅ๋ฅผ ์๋ฏธํ๋ฉฐ, ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ ์ค๋ฅ๋ก ์ธํด ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์๊ณ ๊ทธ ์์ธ์ด ํด๋ผ์ด์ธํธ์๊ฒ ์์์ ๋ปํ๋ค. ์๋ฅผ๋ค์ด ์๋ชป ๊ตฌ์ฑ๋ ์์ฒญ ๋ฉ์ธ์ง ๊ท์น ๊ฐ์ ๊ฒ์ด ์์ ์ ์์ผ๋ฉฐ, ์กด์ฌํ์ง ์์ URL ์์ฒญ๋ ์์ ์ ์๋ค.
400 Bad Request
- Bad Request โข ํด๋ผ์ด์ธํธ๊ฐ ์๋ชป๋ ์์ฒญ์ ๋ณด๋์ ์๋ฏธ
- ํด๋ผ์ด์ธํธ์ ์๋ชป๋ ์์ฒญ์ผ๋ก ์๋ฒ๊ฐ ์ดํดํ ์๊ฐ ์์ด ์์ฒญ์ ์ํํ ์ ์์์ ๋ปํ๋ค.
- ์ฃผ๋ก ์์ฒญ ๊ตฌ๋ฌธ, ๋ฉ์์ง ๋ฑ์ ๋ฌธ๋ฒ ์ค๋ฅ๋ก ์ธํ ๋ฌธ์ ๊ฐ ํด๋น๋๋ฉฐ ์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ชป๋๊ฑฐ๋ API ์คํ์ด ๋ง์ง ์๋ ๊ฒฝ์ฐ์๋ 400 ์ํ์ฝ๋๋ฅผ ๋ด๋ฑ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ ์์ฒญ์ ๊ฒํ ํ๊ณ ์ฌ์ ์กํ์ฌ์ผ ํ๋ค.
- ์๋ฒ๋ ์ํ ์ฝ๋์ ๋๋ถ์ด ๋ฐ๋์ ์๋ฌ ์ด์ ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ช ์ํ๊ณ ์๋ตํ๋ ๊ฒ์ด ์ข๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ฐ๋ก ์์ ์ ์งํํ์ง ์๊ณ ์์ฒญ์ด ์๋ฒ๊ฐ ์ ์ํ ์ ํจ์ฑ์ ๋ง๋์ง ํ์ธ ํ ์งํํ๋ค. ๋ง์ผ ์ด๋ฌํ ๊ฒ์ฆ์ด ์๋ค๋ฉด ๋ฌด์์ 5XX ์๋ฒ ์ค๋ฅ๋ฅผ ๋ฐํํ๊ธฐ์, ์๋ฒ๊ฐ ๋์ํ๊ธฐ ์ด์ ์ฌ์ ์ ๋ฏธ๋ฆฌ ์๋ฐฉํ๋ค๋ ์ฐจ์์ผ๋ก ์ดํดํ๋ฉด ๋๋ค.
๐ 400 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ณ์ง์์ path ํ์์ ์์ฒญ์ ํ๋ค. (์ ํจํ์ง ์์ url)
2. ์๋ฒ๋ ์ฌ์ ์ ํด๋ผ์ด์ธํธ์ ์๋ชป์ธ๊ฑธ ์ธ์งํ๊ณ 400 ์๋ต์ ๋ด์ค๋ค.
์ฐธ๊ณ ๋ก 400 Bad Request ์๋ต์ ํ ๋, ๋ธ๋ ์ํ ์ฝ๋๋ง ๋ณด๋ด์ง๋ง๊ณ , ์์ ๊ฐ์ด ์ค๋ฅ ๋ฐ์ ์์ ํ๋ผ๋ฏธํฐ์ ์์น(path, query, body), ์ฌ์ฉ์ ์ ๋ ฅ ๊ฐ, ์๋ฌ ์ด์ ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ช ์ํ๋ ๊ฒ์ด ์ข๋ค. ๋ถ๋ช ํด๋ผ์ด์ธํธ์ ์๋ชป์ธ๋ฐ ์ด๋ค ๋ถ๋ถ์ด ์๋ชป๋์๋์ง ์๋ ค์ฃผ๋ฉด ์ฌ๋น ๋ฅด๊ฒ ํด๋ผ์ด์ธํธ์ธก์์ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
401 Unauthorized
- Unauthorized โข ์์ฒญ์๋ ์ธ์ฆ(authentication) ๋์ง ์์ ์ํํ ์ ์์์ ํํ
- ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ๋ฆฌ์์ค์ ๋ํ ์ธ์ฆ์ด ์์ด ์ ๊ทผํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค. (์๋ฅผ ๋ค๋ฉด ๋ก๊ทธ์ธ ํ์ง์์ผ๋ฉด ํด๋น ์๋น์ค๋ฅผ ์ด์ฉํ์ง ๋ชปํ๋ ๊ฒ)
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ธ์ฆํ๋ผ๊ณ ์๊ตฌํ๋ ๋ด์ฉ์ ์๋ต์
WWW-Authenticateํค๋์ ํจ๊ป ๋ฐํํ๋ค. ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ธ์ฆ์ ๊ฑฐ์ณ ์์ฒญ์ ์ฌ์ ์กํ๋ฉด ๋๋ค. - ์ฐธ๊ณ ๋ก 401 ์๋ต์ Unauthorized ๊ฐ ์๋ Unauthenticated ๊ฐ ์๋ง๋ ๋จ์ด์ด๋ค.
์ฌ์ค 401 Unauthorized ์ํ ๋ฉ์ธ์ง๋ ์๋ชป ๋ช ๋ช ๋ ๋จ์ด์ด๋ค.
๋ณดํต ์ฐ๋ฆฌ๊ฐ '๊ถํ'์ด๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ๊ฒ์ ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ/์น์ธ(Authorization) ๋๊ฐ์ง ๋จ์ด๊ฐ ์กด์ฌํ๋๋ฐ, ์ธ์ฆ(Authentication)์ ๋ก๊ทธ์ธ๊ณผ ๊ฐ์ ํ์ ์ธ์ฆ ์ ์ฐจ๋ฅผ ๋งํ๋๊ฑฐ๊ณ , ์น์ธ(Authorization)์ ํ์ ๊ฐ์ ์ ๋์์ง๋ง ๋ฑ๊ธ ์ ํ์ ๋งํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ 401 ์ํ ๋ฉ์ธ์ง๋ Unauthenticated ๊ฐ ๋ ์๋ง๋ ํํ์ด๋ค. ๊ทธ๋ฆฌ๊ณ Unauthorization์ 403 Forbidden ์ํ ์ฝ๋์ ๊ฐ๋ ์ด ๋๋ค. ์ด ๋ถ๋ถ์ ๋ค์ 403 Forbidden ์ํ ์ฝ๋์์ ๋ค์ํ๋ฒ ๋ค๋ฃฌ๋ค.
๐ 401 ์ํ์ฝ๋ ํ๋ฆ ์์
HTTP์๋ ๊ธฐ๋ณธ(basic) ์ธ์ฆ๊ณผ ๋ค์ด์ ํธ์คํธ ์ธ์ฆ์ด ์กด์ฌํ๋ค. ๊ทธ์ค ๊ธฐ๋ณธ ์ธ์ฆ ์์๋ฅผ ๋ค์ด๋ณธ๋ค.
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ๋ค.
2. ํ์ง๋ง ์ด๋ฏธ์ง๋ ์ฌ์ดํธ์ ํ์ ๊ฐ์ ์ ํ ์ฌ๋๋ง ๋ณผ์ ์๋ค. ๋ฐ๋ผ์ ์๋ฒ๋ ๋ฆฌ์์ค์ ๋๋ถ์ด WWW-Authenticate ํค๋์ ํจ๊ป 401 ์๋ต์ ๋ฐํํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์ธ์ฆ ์ ์ฐจ๋ฅผ ์งํํ๋ผ๊ณ ์๋ฆฐ๋ค.
3. ๋ธ๋ผ์ฐ์ ์์ 401 ์๋ต์ ๋ฐ๊ณ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ ํ๋ฉด์ ๋์ด๋ค.
4. ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์๋ก ๋ถํฐ ID:PASSWORD ๋ฅผ ์
๋ ฅ ๋ฐ์ ํ base64๋ก ์ธ์ฝ๋ฉํ์ฌ Authorization ํค๋์ ๊ทธ ๊ฐ์ ๋ด์ ์๋ฒ๋ก ๋ค์ ๋ณด๋ธ๋ค.
5. ์๋ฒ๋ Authorization ํค๋๊ฐ์ ๋์ฝ๋ฉํ๊ณ , ๋น๋ฐ๋ฒํธ๊ฐ ์ ํํ์ง ํ์ธํ๊ณ , ๋ฌธ์ ์์ผ๋ฉด HTTP 200 OK ๋ฉ์์ง์ ํจ๊ป ์์ฒญ๋ฐ์๋ ๋ฌธ์๋ฅผ ๋ณด๋ธ๋ค.
402 Payment Required
- ์๋๋ ๋์งํธ ๊ฒฐ์ ์์คํ ์ ์ฌ์ฉํ๊ธฐ ์ํ์ฌ ๋ง๋ค์ด์ก์ง๋ง, ํ์ฌ ์ด ์ํ ์ฝ๋๋ ์ฐ์ด์ง ์๋๋ค.
- ๋์ค์ ์ฌ์ฉ๋ ๊ฒ์ ๋๋นํด ์์ฝ๋ ๋นํ์ค ์๋ต ์ฝ๋
403 Forbidden
- Forbidden โข ์์ฒญ์๋ ์น์ธ(autorization)๋์ง ์์ ์์ ์ ์งํํ ์ ์์
- ์ธ์ฆ ์๊ฒฉ์ ์ฆ๋ช ๋์์ผ๋, ์ ๊ทผ ๊ถํ์ด ๋ถ์ถฉ๋ถํ์ฌ ์๋ฒ๊ฐ ์์ฒญ์ ์น์ธ์ ๊ฑฐ๋ถํ์์ ์๋ฏธํ๋ ๊ฒ์ด๋ค.
- ์๋ฅผ๋ค์ด ํ์์๋ ๋ฑ๊ธ์ด ์กด์ฌํ๋๋ฐ, ๋ง์ผ admin ๋ฑ๊ธ์ด ์๋ ์ฌ์ฉ์๊ฐ admin ๋ฑ๊ธ์ ๋ฆฌ์์ค์ ์ ๊ทผ์ ์์ฒญํ์์ ๋ 403 Forbidden ๋ฉ์์ง๋ฅผ ์๋ต๋ฐ๊ฒ ๋๋ค.
- 401 Unauthorized๊ณผ ๋ค๋ฅธ ์ ์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋๊ตฌ์ธ์ง ์๊ณ ์๋ค๋ ์ ์ด๋ค. (์ธ์ฆ ๋์์ผ๋)
๐ ์ธ์ฆ(Authentication) ๊ณผ ์น์ธ(Authorization) ์ฐจ์ด์
401 Unauthorized ์ํ์ฝ๋์์๋ ํ๋ฒ ์ธ๊ธํ๋ฏ์ด, ์ธ์ฆ(Authentication) ๊ณผ ์น์ธ(Authorization)์ ๋น์ทํด ๋ณด์ด์ง๋ง ์์ฐํ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค.
- ์ธ์ฆ(Authentication) : ๋ณธ์ธ์ด ๋๊ตฌ์ธ์ง ํ์ธ (๋ก๊ทธ์ธ)
- ์น์ธ(Authorization) : ํน์ ๋ฆฌ์์ค์ ๊ถํ์ด ์๋์ง ํ์ธ (๋ฑ๊ธ ๊ถํ)
์นดํ๋ ํฌํธ ์ฌ์ดํธ๋ฅผ ์๋ก๋ค์๋ฉด, ๊ฒ์๋ฌผ์ ์ฝ์ผ๋ ค๊ณ ํฌ์คํ ๋ชฉ๋ก์ ๋๋ ์๋ '๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค' ๊ฒฝ๊ณ ์ฐฝ๊ณผ ํจ๊ป ๋ก๊ทธ์ธ ์ธ์ฆ์ด ์๊ตฌ๋๋ค๋ฉด ์ธ์ฆ(401) ๋์ง ์์ ์ํฉ์ด๋ค.
๊ทธ๋์ ํ์๊ฐ์ ํ๊ณ ๋ก๊ทธ์ธ์ ํ๊ณ ๊ฒ์๋ฌผ์ ๋ค์ด๊ฐ์ ์๊ฒ ๋์๋๋ฐ, ์ด๋ฒ์ ๊ฒ์๋ฌผ์ ์ฒจ๋ถ ํ์ผ์ ๋ค์ด๋ฐ์ผ๋ ค๊ณ ํ๋๋ฐ, '์์น ๋ฑ๊ธ ๋ถํฐ ๋ค์ด ๋ฐ์ ์ ์์ต๋๋ค' ๋ผ๋ ๊ฒฝ๊ณ ์ฐฝ์ด ๋ฌ๋ค๋ฉด ์น์ธ(403) ๋์ง ์์ ์ํฉ์ด๋ค. ์ฆ, ์๋ฒ ์ ์ฅ์์๋ ํ์ฌ ์์ฒญ์๊ฐ ํ์๊ฐ์ ์ ํ์ผ๋ ๋๊ตฐ์ง๋ ์์ง๋ง, ํ์ ๋ฑ๊ธ์ ๋ฐ๋ผ ์ฌ์ฉ์๋ ์์ฒญํ ์์์ ์ ๊ทผํ ๊ถํ์ด ์๋ค๊ณ ํ๋จํ์ฌ ์ฐจ๋จ ํ ๊ฒ์ด๋ค.
์ฆ, ์ธ์ฆ๋์๋ค๊ณ ํ๋๋ผ๋, ์น์ธ๋์ง ์์๋ค๋ฉด ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ค๋ ์๋ฆฌ์ด๋ค.
404 Not Found
- Not Found โข ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์์์ด ์กด์ฌํ์ง ์์
- ์๋ฒ๊ฐ ์์ฒญํ URL์ ์ฐพ์ ์ ์์์ ์๋ ค์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์ ๋ง ์ ๋ช ํ ์ํ ์ฝ๋.
- 404 ํ์ด์ง๋ฅผ ๋์ฐ๋ ๋งํฌ๋ ๋์ฒด๋ก ๋ธ๋กํฐ ๋งํฌ(broken link) ๋๋ ๋ฐ๋ ๋งํฌ(dead link)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋ค๋ง 404 ์๋ต์ ๋ง์ฃผ์ณค๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ํด๋น ๋ฆฌ์์ค๊ฐ ์๋ฒ์ ์กด์ฌํ์ง ์๋๋ค๋ ์๋ฏธ๋ ์๋๋ค. ์๋ฒ๋ ์ธ์ฆ๋ฐ์ง ์์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฆฌ์์ค๋ฅผ ์จ๊ธฐ๊ธฐ ์ํ์ฌ ์ด ์๋ต์ 403 ๋์ ์ 404๋ฅผ ์ ์กํ๋ ์ผ์ด์ค๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ํ 404 ์ํ ์ฝ๋๋ ๋ฆฌ์์ค๊ฐ ์ผ์์ ๋๋ ์๊ตฌ์ ์ผ๋ก ์ฌ๋ผ์ก๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์๋ค. ๋ง์ผ ๋ฆฌ์์ค๊ฐ ์๊ตฌ์ ์ญ์ ๋์๋ค๋ฉด 404 ์ํ ์ฝ๋ ๋์ 410 Gone ์ํ ์ฝ๋๋ฅผ ์ฐ๋ ๊ฒ์ด ๋ง๋ค.
๐ REST API ์ ์ฅ์์์ 404
REST API ์ค๊ณ์์ 404 ์๋ต์ ๋ฐํํด์ค์ผ ํ๋ ๊ฒฝ์ฐ๋ ํฌ๊ฒ ๋๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
- ๊ฒฝ๋ก๊ฐ ์กด์ฌํ์ง ์์
- ์์์ด ์กด์ฌํ์ง ์์
๋๋ถ๋ถ ํ๋ ์์ํฌ์์๋ ๊ฒฝ๋ก(๋ผ์ฐํ )์ ๋ํ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํด์ค๋ค. ์๋ฅผ๋ค์ด ์กด์ฌํ์ง์๋ URL ์์ฒญ ๊ฐ์ ๊ฒฝ์ฐ ์์์ 404๋ก ์๋ตํ๊ฒ ๋๊ณ ์ด๋ฅผ ๊ตณ์ด ๊ฐ๋ฐ์๊ฐ ๊ด๋ฆฌํ ํ์๋ ์๋ค.
๊ทธ๋ฌ๋ ์์์ ๊ฒฝ์ฐ๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฒ๋ฆฌํด์ค์ผ ํ๋ค. ์๋ฅผ๋ค์ด GET /users/1 ์์ฒญ์ผ ๊ฒฝ์ฐ ์ ์์ ์ธ ๊ฒฝ๋ก์ผ ๊ฒฝ์ฐ ์๋ฒ์์ ์ ์ ID 1์ธ ์ฌ์ฉ์๊ฐ ์๋์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ธ์ ํด์ผ ํ๋ค. ๋ง์ฝ ์์์ ๋ํ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ ํ์ง ์๊ณ ๊ทธ๋๋ก ์งํ์ ํด๋ฒ๋ฆฌ๋ฉด ํ์ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ ์ด๊ฒ์ 5XX ์๋ฒ ์ค๋ฅ๋ก ์ด์ด์ง ์ ์๋ค.
REST์์ URI๊ฐ ์์์ด๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ก๊ฐ ๊ณง ์์์ด๊ธฐ๋ ํ๋ค. ๋ฐ๋ผ์ ๊ฒฝ๋ก์ ์์ ๋๊ฐ์ง๋ฅผ ๋ชจ๋ ํ์ธ์ ํ๋ค์ ์๋ค๋ฉด ๋ช ํํ๊ฒ 404 ์๋ต์ ํด์ฃผ๋๋ก ์ค๊ณํ์ฌ์ผ ํ๋ค.
405 Method Not Allowed
- Method Not Allowed โข ์์ฒญ์ด ํ์ฉ๋์ง ์์ ๋ฉ์๋์์ ์๋ฏธ
- ์์ฒญ URL์ ๋ํด ์ง์ํ์ง ์์ ๋ฉ์๋๋ก ์์ฒญ๋ฐ์์ ๋ ์ฌ์ฉํ๋ค.
- ์๋ฅผ๋ค์ด ์ด๋ api์ ๋ํด์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๋ ๊ฒ์ ๊ธ์งํ๊ฑฐ๋์ ์ฌ์ฉ๋ ์ ์๋ค.
- ์ด๋ ์์ฒญํ ๋ฆฌ์์ค์ ๋ํด ์ด๋ค ๋ฉ์๋๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ฃผ๊ธฐ ์ํด, ์๋ต์
Allowํค๋๊ฐ ํฌํจ๋์ด์ผ ํ๋ค. - ๋จ, GET์ HEAD๋ ํ์ ๋ฉ์๋๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ 405 ์๋ต์ผ๋ก ์ ํํ ์ ์๋ค.
๐ 405 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ OPTIONS ๋ฉ์๋๋ฅผ ํตํด ์์ฒญ ๊ฐ๋ฅํ ๋ฉ์๋ ๋ชฉ๋ก์ ์๊ตฌํ๋ค.
2. ์๋ฒ๋ ์์ฒญ์ด ํ์ฉ๋ HTTP ๋ฉ์๋ ๋ชฉ๋ก์ Allow ํค๋๋ฅผ ํตํด ๋ฐํํ๋ค.
3. ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ํ์ฉํ์ง ์์ ๋ฉ์๋์ธ POST๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
4. ํ์ฉ๋์ง ์์ ๋ฉ์๋ ์์ฒญ์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ 405 ์๋ต์ ๋ด๋ฆฐ๋ค.
[ allow ํค๋ ์ access-control-allow-methods ํค๋ ์ฐจ์ด์ ]
์ฐ์ ๋๋ค ์์ฒญ์ด ํ์ฉ๋ ๋ฉ์๋ ๋ชฉ๋ก๋ค์ ๋ฐํํ์ง๋ง, access-control-allow-methods ํค๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ajax ์์ฒญ์ผ๋ ์๋ต๋ฐ๊ณ , allow ํค๋๋ ์ผ๋ฐ HTTP ์์ฒญ์ ๋ฐํ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
406 Not Acceptable
- Not Acceptable โข ์ฝํ ์ธ ํ์์ ์ผ์นํ๋ ๊ฒ์ด ์์
- ์ด ์๋ต์ ์๋ฒ๊ฐ ์๋ฒ ์ฃผ๋ ์ฝํ ์ธ ํ์์ ์ํํ ํ, ์ฌ์ฉ์ ์์ด์ ํธ์์ ๋ณด๋ธ ๊ท๊ฒฉ์ ์ด๋ ํ ์ฝํ ์ธ ๋ ์ฐพ์ง ๋ชปํ์ ๋ ๋ณด๋ด๋ ์๋ต์ด๋ค.
- ์ข ์ข ์๋ฒ๋ ํด๋ผ์๊ฒ ์ ์์ฒญ์ด ๋ง์กฑ๋ ์ ์์๋์ง ์๋ ค์ฃผ๋ ํค๋๋ฅผ ํฌํจ์ํจ๋ค.
- ๋จ, ํ์ ์์๋ ์ด ์ค๋ฅ ์ฝ๋๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค.
๐ 406 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ํ๊ตญ์ด๋ก ๋ ๋ด์ค ํ์ด์ง๋ฅผ ์๋ฒ์ ์์ฒญํ๋ค.
2. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ๋ค.ํ์ง๋ง ์๋ฒ๋ ํ๊ตญ์ด๋ฅผ ์ง์ํ์ง ์๊ธฐ์ ํด๋น๋๋ ์ธ์ด๊ฐ์ด ์์ด ํ์์ ์คํจํ๊ฒ ๋์ด 406์ ์๋ตํ๊ฒ ๋๋ค.
๋ค๋ง ์ด๋ฌํ ์ํ ์ฝ๋ ํ๋ฆ ํํ๋ ํ์ ์์ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋๋ค.
์๋ฒ๋ ์ฌ์ฉ์๊ฐ ์ฝ๊ธฐ ์ด๋ ค์ด ์ด ์ค๋ฅ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ตํ๋ ๋์ , ๊ด๋ จ ํค๋๋ฅผ ๋ฌด์ํ๊ณ ์ฌ์ฉ์์๊ฒ ์ค์ ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ ์ชฝ์ผ๋ก ์ ๋ํ๋๋ก ์ค๊ณ๋๋ค. ์๋ฅผ๋ค์ด ํ์ ํค๋์ ํ์ ์ฐ์ ์์๋ฅผ ์ง์ ํ์ง ์๊ณ ๋ธ๋ ko ๋ง ์จ์ ์ผ์นํ๋ ์ธ์ด ๊ฐ์ด ์์ผ๋ฉด 406์ ๋ตํ๋ ๋์ ๊ทธ๋ฅ ๊ธฐ๋ณธ ์ธ์ด ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด๋ค.
407 Proxy Authentication Required
- Proxy Authentication Required โข ํ๋ก์ ์ธ์ฆ์ ์๊ตฌ
- 401 Unauthorized ์ ๊ฐ์ผ๋, ํ๋ก์ ๋ฒ์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. (์ฌ๊ธฐ์ Authentication ์ด๋ผ๊ณ ์ ๋๋ก ํํ๋์๋ค)
- ๋ฆฌ์์ค์ ๋ํด ์ค๊ฐ ํ๋ก์ ์๋ฒ์ ์ํด ์๋ฃ๋ ์ธ์ฆ์ด ํ์ํ๋ค๋ ๋ป์ด๋ค.
- ํ๋ก์ ์๋ฒ๋ ์ ๊ทผ ์ ์ฑ ์ ์ค์ ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋จ์ผ ๊ด๋ฆฌ ํฌ์ธํธ๋ก๋ ๋ง์ด ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ด์ ๊ด๋ จ๋ ์ํ ์ฝ๋๋ฅผ ๋ฐ๋ก ์ง์ํ๋ ๊ฒ์ด๋ค.
- ๋จ, ํ๋ก์์ ์น ์๋ฒ ์ธ์ฆ ํค๋๊ฐ ์กฐ๊ธ ๋ค๋ฅด๋ค.
๐ 407 ์ํ์ฝ๋ ํ๋ฆ ์์
408 Request Timeout
- Request Timeout โข ์์ฒญ์ด ๋๋ฌด ์ปค ์ฒ๋ฆฌ ์๊ฐ์ด ์ด๊ณผ๋์ด ์๋ฒ์์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ์๋ํ๊ณ ์ฐ๊ฒฐ์ ๋ซ์
- ๋ง์ผ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์์ํ๊ธฐ์ ์๊ฐ์ด ๋๋ฌด ๋ง์ด ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ, ์๋ฒ๋ ์ด ์ํ ์ฝ๋๋ก ์๋ตํ๊ณ ์ฐ๊ฒฐ์ ๋์ ์ ์๋ค.
- ํน์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋งค์ฐ ๋๋ฆฌ๊ฑฐ๋ ๋์ด์ก๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์๋ ์๋ค.
- ์๋ฒ์ ํ์ ์์ ๊ธฐ์ค์ ์๋ฒ ์ค์ ๋ง๋ค ๋ค๋ฅด๋ค.
- 408 ์๋ต์ ์๋ฒ๊ฐ ์ฐ๊ฒฐ์ ๋ซ๊ธฐ๋ก ๊ฒฐ์ ํ์์ ์๋ฏธํ๋ฏ๋ก, ์๋ตํ ๋
Connection: closeํค๋๋ฅผ ๋ฐ๋์ ์ ์กํด์ผ ํ๋ค. - ์ด ์๋ต์ Chrome, Firefox 27+, IE9์ ๊ฐ์ ์ผ๋ถ ๋ธ๋ผ์ฐ์ ๋ค์ด ์น์ํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด HTTP ์ฌ์ ์ฐ๊ฒฐ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋ง์ผ ๋คํธ์ํฌ๊ฐ ๋ถ์์ ํ๋ฉด ์ข ์ข ๋ณผ์ ์๋ ์๋ต์ด๊ธฐ๋ ํ๋ค.
๐ 408 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ 10K์ ๋ฌํ๋ PDF ํ์ผ์ ์๋ฒ์ ์์ฒญํ๋ค.
2. ์๋ฒ๋ ์์ฒญ ์ฒ๋ฆฌ์ค ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๊ฐํ์ ์ธ ๋ฌธ์ ๋ก ์ธํด ์ ์ฒด ์ ์ก ์๋๊ฐ ๋๋ฌด ๋๋ฆฌ๋ค๊ณ ๊ฒฐ๋ก ์ ๋ด๋ฆฌ๊ณ Connection ํค๋๋ฅผ ํตํด ์์ฒญ์ ์ทจ์ํ๊ณ ์ฐ๊ฒฐ์ ๋ซ์์ ํ์ํ๊ณ ์๋ตํ๊ฒ ๋๋ค.
409 Conflict
- Conflict โข ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์๋ฒ์ ์ํ์ ์ถฉ๋์ด ๋ฐ์
- ์์ฒญ ์ฒ๋ฆฌ ์ค ๋น์ง๋์ค ๋ก์ง์ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ๋ชจ์์ด ์๊ธด ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ค.
- ์ฌํ 4XX ์ํ ์ฝ๋ ์ฒ๋ผ ์์ฒญ์ ์์ด ๋ฉ์๋ ์ง์ ์ ๋ฌด๋, ์์ ์ ๋ฌด, ์ธ์ฆ ์ ๋ฌด์ ๊ฐ์ ํ์คํ ์ค๋ฅ ์ํฉ๋ค์ ์ ์ธํ ๋ก์ง ์ค๋ฅ ์ํฉ์์ ์ฐ์ธ๋ค.
- ์ฌ์ค ์ถฉ๋(conflict)์ด๋ผ๋ ๊ฒ์ ์ถ์์ ์ธ ์ค๋ฅ ํ์์ด๊ธฐ ๋๋ฌธ์, ์ฌํ 4XX ์ํ ์ฝ๋์ ์ํ์ง ์์ ์ ๋งคํ ์ค๋ฅ์ ์ํฉ๋ค์ ์ฒ๋ฆฌํ๋๋ฐ ์ด์ฉ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
- ๊ทธ๋์ ์๋ต์ ์ถฉ๋์ ๋ํด ์ค๋ช ํ๋ ๊ตฌ์ฒด์ ์ธ ๋ณธ๋ฌธ์ ํฌํจํด์ผ ํ๋ค.
๐ 409 ์ํ์ฝ๋ ํ๋ฆ ์์
์๋ฅผ๋ค์ด ํ์ ํํด๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ, ์๋น์ค ๋ก์ง ํน์ฑ์ ํ์ ํํด๋ฅผ ํ๋ ค๋ฉด ์ง๊ธ๊น์ง ์์ฑํ๋ ๊ฒ์๊ธ์ ๋ชจ๋ ์ญ์ ํ์ฌ์ผ ํํด๊ฐ ๊ฐ๋ฅํ๋ค๋ผ๊ณ ํ ๋ ๊ทธ์ ๋ํ ์ค๋ฅ๋ฅผ 403 Conflict ๋ฅผ ํตํด ์๋ฆฐ๋ค.
์ด๋ฐ์ ๋ณ์ ๊ฒ์ง ์์ฝ์ ์งํํ๋ ค๋๋ฐ, ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์๊ฐ์ด ์ด๋ฏธ ์์ฝ์ด ์กํ ์๊ฐ๋์ฌ์ ์์ฝ์ด ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๊ฐ์ ํ ๋๋ 409 ์๋ต์ ๋ณด๋ด์ฃผ๊ฒ ๋๋ค.
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ํ์ ์ญ์ ์์ฒญ์ ๋ณด๋ธ๋ค.
2. ์๋ฒ๋ ํ์ ํํด๋ฅผ ์ํด์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฐ์ ๊ฒ์๊ธ๋ค์ ๋จผ์ ์ง์์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ค๋ฅ์ ์์ธ์ ๋ณธ๋ฌธ์ ๋ด์์ฑ 409 ์๋ต์ ํ๋ค.
410 Gone
- Gone โข ๋ฆฌ์์ค๊ฐ ์๊ตฌํ ์ญ์ ๋จ
- 404 Not Found์ ๋น์ทํ๋ 410 ์๋ต์ ์์ฒญํ ์ปจํ ์ธ ๊ฐ ์๋ฒ์์ ์๊ตฌํ ์ญ์ ๋์ด ์ ๋ฌํด ์ค ์ฃผ์๊ฐ ์กด์ฌํ์ง ์์๋ ์ฌ์ฉ๋๋ค.
411 Length Required
- Length Required โข ์์ฒญ ๋ฉ์์ง์
Content-Lengthํค๋๊ฐ ์์ ๊ฒ์ ์๊ตฌ - ์๋ฒ์์ ๋ก์ง์ ์ฒ๋ฆฌํ๋๋ฐ ํ์๋ก ํ๋
Content-Lengthํค๋ ํ๋๊ฐ ์์ด ์๋ฒ๊ฐ ์์ฒญ์ ๊ฑฐ์ ํ ๋ ์๋ต๋๋ค. - ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ chunk ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋, ์ธ์ฝ๋ฉ์ ๋ฐ์๋ค์ฌ์ฃผ์ง ์์ ๊ฒฝ์ฐ์๋ ์ด์ฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ์์ฒญ ํค๋์
Content-Length๋ฅผ ํฌํจํ๊ณ ์ฌ์์ฒญํ๋ฉด ๋๋ค.
412 Precondition Failed
- Precondition Failed โข ํด๋ผ์ด์ธํธ์ ์กฐ๊ฑด๋ถ ์์ฒญ ์คํจ
- ํด๋ผ์ด์ธํธ๊ฐ ์บ์์ ๋ํ ์กฐ๊ฑด๋ถ ์์ฒญ์ ํ๋๋ฐ ์คํจํ์ ๋ ์๋ต๋๋ค. (Etag๋ ์์ ์ผ์ง ๋ถ์ผ์น)
- 304 Not Modified ์ฒ๋ผ ์บ์ ๊ด๋ จ ์์ฒญ์์ ์ฐ์ด๋ ์ฝ๋์ด๋ค.
- ๋จ, POST, PUT, DELETE ๋ฉ์๋ ๋ฑ GET, HEAD ์ด์ธ์ ๋ฉ์๋์์๋ง ์์ฒญํ์๋๋ง ์ฌ์ฉ๋๋ค.
- ์ด ์ํ ์ฝ๋๋ฅผ ๋ฐ๋ฅด๋ฉด '์
๋ฐ์ดํธ ์์ค' ๋ฌธ์ ๋ฅผ ํผํ ์ ์๋ค.
์ ๋ฐ์ดํธ ์์ค์ ์ฌ๋ฌ ์ฌ๋์ด ๋์ผํ ๋ฆฌ์์ค๋ฅผ ์ฐ๊ณ ์๊ณ ํ ๋ช ์ด์์ด ์ค๋๋ ๋ฒ์ ์ผ๋ก ์์ ํ ๋, ๋ฆฌ์์ค๊ฐ ์์ ๋์ง ์์๋์ง ํ์ธํจ์ผ๋ก์จ ์ค๊ฐ์ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ฐ๊ฑฐ๋ ์์ ํ์ง ์๋๋ก ๋ณด์ฅํ๋ค.
๐ 412 ์ํ์ฝ๋ ํ๋ฆ ์์
์๋ฅผ๋ค์ด ์ผํ๋ชฐ ์ฌ์ดํธ์์ ํค๋ณด๋๊ฐ 1๊ฐ๋ง ๋จ์ ์ํ๋ผ๊ณ ๊ฐ์ ํด๋ณด์. ์ด๋ ๋๋ช ์ ์๋น์๊ฐ ๋์์ ํด๋น ํค๋ณด๋ ๊ตฌ๋งค ํ์ด์ง์ ์ ์ํ๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์คํฌํ์ผ๋ก ์ ์ํ ์๋น์๊ฐ ๋จผ์ ๊ตฌ๋งค ์์ฒญ์ ์๋ฒ์๊ฒ ๋ณด๋ด์๋ค. ๊ทธ๋ฌ๋ฉด 1๊ฐ ๋ฐ์ ์๋จ์ ํค๋ณด๋๋ ํ์ ์ด ๋๊ฒ ๋๊ณ ์ผํ๋ชฐ ์๋ฒ๋ ํด๋น ํค๋ณด๋ ๊ตฌ๋งค ํ์ด์ง์ ๋ํด ํ์ ์ด ๋์๋ค๊ณ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธ ํ๋ค.
ํ์ง๋ง ์์ง ๋ชจ๋ฐ์ผ๋ก ์ ์ํ ์๋น์๋ ์ค์ ๋ก๋ ํ์ ๋ฌ์์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ ํ old ํ์ด์ง๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ๊ตฌ๋งคํ๊ธฐ ๋ฒํผ์ ๋๋ฅผ ์ ์๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ฐ์ผ ์๋น์๊ฐ ๊ตฌ๋งค ๋ฒํผ์ ๋๋ฅด๊ฒ ๋๋ฉด ๋ฐ๋ก 412 Precondition failed ๋ฅผ ์๋ตํ์ฌ ๊ตฌ๋งค ๋ก์ง์ด ์ฒ๋ฆฌ๋์ง ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
๐ 412 ์ํ ํ๋ฆ
์์ ๊ณผ์ ์ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ด ๋๋ค.
- ๋จผ์ ๋ชจ๋ฐ์ผ์์ ์ผํ๋ชฐ ์ฌ์ดํธ๋ก ์ ์ํ๊ณ ๋ฌธ์๋ฅผ ์บ์ฑํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์๋ฒ๋ ๋ชจ๋ฐ์ผ์๊ฒ
Etag: x๋ฅผ ๋ด๋ ค์ค๋ค. - ์น์์๋ ์ผํ๋ชฐ ์ฌ์ดํธ๋ก ์ ์ํ๊ณ ๋ฌธ์๋ฅผ ์บ์ฑํ๋ค.
- ๋ฌธ์ ์์ฒด๋ ์์ ๋์ง ์์์ผ๋ ๋๊ฐ์ด ์๋ฒ๋ ์น์๊ฒ
Etag: x๋ฅผ ๋ด๋ ค์ค๋ค. - ์ด๋ ์น์ด ๋จผ์ ๊ตฌ๋งค ์์ฒญ(PATCH)๋ฅผ ํ๊ฒ ๋๋ค.
- ์๋ฒ๋ If-Match ํค๋๊ฐ๊ณผ Etag ํค๋๊ฐ์ ๋น๊ตํ์ฌ ๋์ด x๋ก ์ผ์นํ๋ ๋ฌธ์๋ฅผ ์ต์ ์ํ๋ก ์ ๋ฐ์ดํธ(ํ์ )ํ๊ณ Etag๋ฅผ y๋ก ๊ฐฑ์ ํ๊ณ ์๋ตํ๋ค.
- ๊ทธํ์ ๋ชจ๋ฐ์ผ์ด ๊ตฌ๋งค์์ฒญ์ ํ๋ค.
- ํ์ง๋ง ๋ชจ๋ฐ์ผ์ด ๊ฐ๊ณ ์๋ Etag๋ x๊ณ ์๋ฒ์ ์๋ ๋ฌธ์์ Etag๋ ๋ฐฉ๊ธ ์น์ ์ํด์ y๋ก ์ ๋ฐ์ดํธ ๋์์ผ๋, ๋ถ์ผ์น๊ฐ ๋๊ณ ์๋ฒ๋ ๊ตฌ๋งค ๋ก์ง์ ์คํํ์ง ์๊ณ 412 ์๋ฌ ์๋ต์ ๋ณด๋ด๊ฒ ๋๋ค.
๐ 304 ์ 412 ์ํ ์ฝ๋ ์ฐจ์ด
๋จ์ํ ์์๋ฆฌ ์ซ์๊ฐ ๋ค๋ฅด๋ค๋ฅผ ๋ฌผ์ด๋ณด๋ ๊ฒ์ด ์๋๋ค.
304 Not Modified ์ 412 Precondition failed ๋ ์น๋ธ๋ผ์ฐ์ ์ ์บ์ ๊ด๋ จ ํค๋์ ์ฐ๊ด๋ ์ํ ์ฝ๋๋ก์, ํด๋ผ์ด์ธํธ์ ๋ฆฌ์์ค ์์ ์ํ์ ์๋ฒ์ ๋ฆฌ์์ค ์์ ์ํ๊ฐ ๋ค๋ฅด๋ฉด ์๋ตํ๊ฒ ๋๋ค.
๊ทธ๋ผ ๋ฌด์จ ๊ธฐ์ค์ผ๋ก ์ด๋ค๊ฑด ์ ์ ์ฝ๋์ด๊ณ ์ด๋ค๊ฑด ์ค๋ฅ ์ฝ๋ ์ธ์ง ํผ๋์ด ์ฌ์ ์๋๋ฐ ์์ธ๋ก ๊ฐ๋จํ๋ค.
→ 304 ์๋ต์ GET ๊ณผ HEAD ๋ฉ์๋์๋ง ๋์ํ๋ค.
→ 412 ์๋ต์ ์ด๋ฅผ ์ ์ธํ POST, PUT, PATCH ๋ฑ ๋ฉ์๋์๋ง ๋์ํ๋ค.
๋ฐ๋ผ์ ์์ ์ผํ๋ชฐ ์์ ์์ 412 ์๋ต์ด ๋ฐํ๋ ์ด์ ๋ PATCH ๋ฉ์๋๋ฅผ ํตํด ์์ธ์ค ํ๋ ค๊ณ ํ์๊ธฐ ๋๋ฌธ์ด๋ค.
413 Payload Too Large
- Payload Too Large โข ์์ฒญ ๋ณธ๋ฌธ์ด ์๋ฒ์์ ์ ์ํ ํ๊ณ๋ณด๋ค ๋๋ฌด ์ปค ์ฒ๋ฆฌํ ์ ์์
- 413 Request Entity Too Large ๋ก๋ ์ฐ์ฌ์ง
- ์๋ฒ๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ํ๊ณ๋ฅผ ๋์ ํฌ๊ธฐ์ ๋ณธ๋ฌธ์ ํฌํจํ ์์ฒญ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋์ ๋ ์ฌ์ฉํ๋ค.
- ์๋ฒ๋ ์ฐ๊ฒฐ์ ๋๊ฑฐ๋ ํน์
Retry-Afterํค๋ ํ๋๋ก ๋๋ ค๋ณด๋ผ ๊ฒ์ด๋ค.
414 URI Too Long
- URI Too Long โข ์์ฒญ URI์ด ๋๋ฌด ๊ธธ์ด ์ฒ๋ฆฌํ ์ ์์
- 413 Request URI Too Long ๋ก๋ ์ฐ์ฌ์ง
- ์๋ฒ๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ํ๊ณ๋ฅผ ๋์ ๊ธธ์ด์ ์์ฒญ URI๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋์๋ ์๋ต๋๋ค.
415 Unsupported Media Type
- Unsupported Media Type โข ์์ฒญํ ๋ฏธ๋์ด ํฌ๋งท์ ์๋ฒ์์ ์ง์ํ์ง ์์
- ์๋ฒ๊ฐ ์ดํดํ๊ฑฐ๋ ์ง์ํ์ง ๋ชปํ๋ ๋ด์ฉ ์ ํ์ ๋ณธ๋ฌธ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ผ๋ ์๋ต๋๋ค.
416 Range Not Satisfiable
- Range Not Satisfiable โข
Rangeํค๋ ํ๋์ ์์ฒญํ ์ง์ ๋ฒ์๋ฅผ ๋ง์กฑ์ํฌ ์ ์์ - ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ ํน์ ๋ฒ์๋ฅผ ์์ฒญํ๋๋ฐ, ๊ทธ ๋ฒ์๊ฐ ์๋ชป๋์๊ฑฐ๋ ๋ง์ง ์์ ๋ ์๋ต๋๋ค.
417 Expectation Failed
- Expectation Failed โข
Expect์์ฒญ ํค๋ ํ๋๋ก ์์ฒญํ ์์ ๋ฐํ ์ฝ๋๋ฅผ ๋ง์กฑ ์ํฌ ์ ์์ Expect์์ฒญ ํค๋์ ์ฐ๊ด์๋ ์ํ ์ฝ๋ (์ฑ๊ณตํ๋ฉด 100, ์คํจํ๋ฉด 417)
๐ 417 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ 10K ์ฉ๋์ PDF ํ์ผ ์ ์ก์ ์์ฒญํ๋ค. ์ด๋ ์๋ฒ์๊ฒ ๊ฐ๋ฅํ์ง ๋ฏธ๋ฆฌ ๋ฌผ์ด๋ณด๊ธฐ ์ํด Expect ํค๋๋ก 100 ์๋ต์ ๊ธฐ๋ํ๋ค.
2. ํ์ง๋ง ์๋ฒ๋ 10K์ ๋ฌํ๋ PDF ํ์ผ์ ๋ณด๋ด์ค์ ์๊ธฐ ๋๋ฌธ์ 417์ผ๋ก ํ๋ตํ๋ค.
418 I’m a teapot
- I’m a teapot โข ๋ง์ฐ์ ๋๋ด ์ํ ์ฝ๋
- ์ด ์ค๋ฅ๋ 1998๋ ๋ง์ฐ์ ๋๋ด์ด์๋ ํ์ดํผ ํ ์คํธ ์ปคํผ ํฌํธ ์ ์ด ๊ท์ฝ(Hyper Text Coffee Pot Control Protocol)์ ๋ ํผ๋ฐ์ค๋ค.
420 Method Failure or Enhance your calm
- ํด๋ผ์ด์ธํธ ์ค๋ฅ๋ฅผ โโ๋ํ๋ด๊ธฐ ์ํด ์๋ฒ์์ ๋ฐํํ๋ ๋น๊ณต์ ํด๋ผ์ด์ธํธ ์ค๋ฅ
- Spring Framework์์ ๋ฉ์๋๊ฐ ์คํจํ์์ ๋ํ๋ด๋ ๋น๊ณต์ ์๋ต์ฝ๋๋ก๋ ์ฐ์์ (์ง๊ธ์ ์์ฐ์)
421 Misdirected Request
- Misdirected Request โข ์๋ชป๋ ๋ฐฉํฅ์ ์์ฒญ
- ์๋ํ์ง ์์ ์์ฒญ์ ๋ฐ์ ์๋ฒ๊ฐ ์๋ต์ ์์ฑํ ์ ์์์ ๋ํ๋
422 Unprocessable Entity
- Unprocessable Entity โข ์๋ฒ์์ ๋ณธ๋ฌธ์ ์ฒ๋ฆฌํ ์ ์์
- ์ด ์๋ต์ ์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ๊ณ ์์ฒญ ๋ฌธ๋ฒ๋ ์ฌ๋ฐ๋ฅด์ง๋ง ์์ฒญ๋ ์ง์๋ฅผ ๋ฐ๋ฅผ ์ ์์์ ๋ํ๋
- ์์ฒญ ๋ฐ์ดํฐ์ ๋ํด validation ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด์ ์ ํฉํ์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋ ๋ฐํ
423 Locked
- Locked โข ๋ฆฌ์์ค๋ ์ ๊ทผํ๋ ๊ฒ์ด ์ ๊ฒจ์์
- ์์ฒญ์ ๋ํ ๋์ ํ์ผ ๋๋ ํด๋๊ฐ ์ ๊ฒจ ์์๋ ๋ฐํ
- WebDAV์ ์ฌ์ฉ๋๋ ์๋ต ์ฝ๋
424 Failed Dependency
- ์์ฒญ๋ ์์ ์ด ์คํจํ ๋ค๋ฅธ ์์ ์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ํํ ์ ์์
- ์ฆ, ์ด์ ์์ฒญ์ด ์คํจํ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์์ฒญ๋ ์คํจํ์์์ ์๋ฏธ
- WebDAV์ ์ฌ์ฉ๋๋ ์๋ต ์ฝ๋
426 Upgrade Required
- Upgrade Required โข ํ๋กํ ์ฝ ์ ๊ทธ๋ ์ด๋ ๊ถ๊ณ
- ์๋ฒ๊ฐ ํ์ฌ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ํ ์์ฌ๊ฐ ์์์ ๋ํ๋ด๊ธฐ ์ํด ๋ฐํ๋๋ ์๋ต ์ฝ๋์ด๋ค.
- ์๋ฅผ๋ค์ด ์๋ฒ๋ HTTP/1.1 ๋ฒ์ ์ ๋ฐ์ง์๊ณ HTTP/2 ์ด์๋ง ๋ฐ๋๋ค๊ณ ํ ๋, ํด๋ผ์ด์ธํธ๊ฐ HTTP/1.1๋ก ์์ฒญ์ ๋ณด๋ด๋ ์ํฉ์ ๋งํ ์ ์๋ค.
- ์๋ฒ๋ ์๋ตํ ๋
Upgradeํค๋์ ํ์๋ก ํ๋ ํ๋กํ ์ฝ์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ค๋ค. - ํ๋กํ ์ฝ ๊ด๋ จ 101 Switching Protocols ์ํ ์ฝ๋์ ๊ด๋ จ์ด ์๋ค.
๐ 426 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ HTTP/1.1๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
2. ํ์ง๋ง ์๋ฒ๋ HTTP/1.1 ์์ฒญ ์์ฒด๋ ๋ฐ์ง๋ง, ์ด ํ๋กํ ์ฝ๋ก ์๋ฒ ๋ก์ง์ ์ฒ๋ฆฌํ์ง ์๋๋ก ์ค๊ณ๋์ด์๊ธฐ ๋๋ฌธ์, Upgrade ํค๋์ ๊ถ๊ณ ํ๋กํ ์ฝ์ ๊ธฐ์ฌํ๊ณ 426 ์๋ต์ ๋ฐํํ๋ค.
3. ํด๋ผ์ด์ธํธ๋ HTTP/2๋ก ํต์ ํ๊ธฐ ์ํด ํ์ฌ HTTP/1.1๋ก ํต์ ํ๊ณ ์๋ ์๋ฒ์๊ฒ ํ๋กํ ์ฝ ์ ๊ทธ๋ ์ด๋ ์์ฒญ์ ํ๋ค.
4. ์๋ฒ๋ 101 ์๋ต๊ณผ ํจ๊ป HTTP/2 ํ๋กํ ์ฝ๋ก ์ ํ์ ์์ํ๋ค.
5. ์ด์ ํด๋ผ์ด์ธํธ๋ HTTP/2 ๋ก ์๋ฒ์ ํต์ ํ๊ฒ ๋๋ค.
428 Precondition Required
- Precondition Required โข ์กฐ๊ฑด๋ถ ์์ฒญ์ด ์๊ตฌ๋จ
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ์ ์กฐ๊ฑด๋ถ๋ก ํด์ผ ํจ์ ๋ํ๋ธ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก
If-Match์ ๊ฐ์ ํ์ ์ ์ ์กฐ๊ฑด๋ถ ํค๋๊ฐ ๋๋ฝ๋ฌ์๋ ๋ฐํ๋๋ค. - ๋ง์ผ ์กฐ๊ฑด๋ถ ํค๋๊ฐ ์๋ฒ ์ธก ๋ฆฌ์์ค ์ํ์ ์ผ์นํ์ง ์์ ๊ฒฝ์ฐ ์๋ต์ 412 Precondition Failed๊ฐ ๋๊ฒ ๋๋ค.
๐ 428 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์ด์ ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํด ๋ณต์ฌ๋ณธ์ ์ป์ด ์บ์ฑํด๋์๊ณ , ๊ทธ ์ดํ ๋ฆฌ์์ค ์์ ์์ฒญ์ ๋ณด๋ด๋ ์ํฉ์ด๋ค. ์ด๋ ์กฐ๊ฑด๋ถ ํค๋๋ฅผ ๋ฃ์ง ์์์ฑ๋ก ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค.
2. ํ์ง๋ง ์๋ฒ๋ ์บ์ฑ ๊ด๋ จ ์ ๋ฐ์ดํธ ์์ค์ด ๋ฐ์ํ๊ฒ ํ์ง์๊ธฐ ์ํด 428 ์๋ต์ ํ๊ฒ ๋๋ค.
3. ํด๋ผ์ด์ธํธ๋ ์กฐ๊ฑด๋ถ ํค๋๋ฅผ ๋ฃ๊ณ ๋ค์ ๋ณด๋ธ๋ค.
429 Too Many Requests
- Too Many Requests โข ํด๋ผ์ด์ธํธ๊ฐ ์ผ์ ์๊ฐ ๋์ ๋๋ฌด ๋ง์ ์์ฒญ์ ๋ณด๋ธ ๊ฒฝ์ฐ
- ์๋น์ค๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ๋์ ์ ํํ๋ ค๋ ๊ฒฝ์ฐ ์ด์ฉ๋๋ค. (์๋ฅผ ๋ค์ด API ์ฌ์ฉ๊ฑด์๋ฅผ ์๊ฐ๋น 100๊ฐ ๋ก ์ ํ)
- ํน์ ๋๋์ค์ ๊ฐ์ ๋น์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์์์ ๋ง๊ตฌ๋ง๊ตฌ ์์ฒญํ๋ ๊ฒฝ์ฐ, ์๋ฒ๋ ๊ฐ์ฉ์ฑ์ ์ํด ์์ฒญ ์์ ์ ํ์ ๊ฑธ ์ ์๋ค.
Retry-Afterํค๋๋ฅผ ์ด์ฉํ์ฌ ๋ช์ด ๋ค์ ์ฌ์๋ ํ ๊ฒ์ ๋ํ๋ธ๋ค.
๐ 429 ์ํ์ฝ๋ ํ๋ฆ ์์
1. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ ์์ฒญ์ ๋ง๊ตฌ๋ง๊ตฌ ๋ณด๋ธ๋ค.
2. ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ Retry-After ํค๋๋ฅผ ํตํด 1800์ด ๋ค์ ์์ฒญ์ ํ๋ผ๊ณ ์๋ตํ๋ค.
โ๏ธ ์๋ฒ ๊ณต๊ฒฉ์ ๋ํ ๋ฐฉ์ด์ฑ
๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ์ ๋ํ ๋ฐฉ์ด
๋ฌด์ฐจ๋ณ ๋์ ๊ธฐ๋ฐ์ฑ ๊ณต๊ฒฉ(Brute-force)์ ํด์ปค๊ฐ ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์๋ด๊ธฐ ์ํด, ํจ์ค์๋๊ฐ์ ๋ฌด์์๋ก ๋ฃ๊ณ ๋ก๊ทธ์ธ ์์ฒญ์ ๋ฌด์ฐจ๋ณ์ ์ผ๋ก ํ๋ ๊ฒ์ ๋งํ๋ค. ์๋ฒ๋ ์์ฒญ์ ์ ํ์ ๋์ง์๊ฒ๋๋ฉด ํ์์ ๊ธฐ๋ฐ์ฑ์ด ํผํด๋ฅผ ์ ์์ ์์ผ๋ฉฐ ๋ํ ์๋ฒ ์์ฒด์ ๊ฐ์ฉ์ฑ์๋ ํผํด๋ฅผ ์ ์ ์ ์๋ค. ๋ฐ๋ผ์ ์๋ฒ๋ ์ด๋ฌํ ๊ณต๊ฒฉ์ ๋๋นํด ์ธ์ฆ๊ด๋ จ API ์์ฒญ์ ๊ฒฝ์ฐ n ์๊ฐ ๋์ nํ๋ง ์์ฒญ ๊ฐ๋ฅ ํ๋ค๋ ๋ฃฐ์ ์ ํ๊ณ , ์ด๊ฒ์ ์ด๊ณผํ ๊ฒฝ์ฐ 429 ์๋ต์ ํ๋๋ก ์ค๊ณํ๋ค.
๋๋์ค ๊ณต๊ฒฉ์ ๋ํ ๋ฐฉ์ด
๋์ค(Dos) ๊ณต๊ฒฉ ํน์, ๋๋์ค(D-Dos) ๊ณต๊ฒฉ์ ์ฌ์ฉ์์ ์ ๋ณด ํ์ทจ๊ฐ ๋ชฉ์ ์ด ์๋ ๋ฌด์ฐจ๋ณ์ ์ธ ์์ฒญ์ผ๋ก ์๋ฒ ์์ฒด์ ๊ณผ๋ถํ๋ฅผ ์ค์ ์๋น์ค๋ฅผ ๋จนํต์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋งํ๋ค. ์ด ๊ณต๊ฒฉ์ ๋จ์ผ์ด ํ๋ฉด ๋์ค ๊ณต๊ฒฉ์ด๊ณ ๋จ์ฒด๊ฐ ํ๋ฉด ๋๋์ค ๊ณต๊ฒฉ์ด๋ค.
๋ฐ๋ผ์ ์๋ฒ๋ n ์๊ฐ ๋์ nํ๋ง ์์ฒญ ๊ฐ๋ฅ ํ๋ค๋ ๋ฃฐ์ ์ ํ ํ์๊ฐ ์๋๋ฐ, ๋จ 429 ์ํ ์ฝ๋๊ฐ ์๋ฒ์ ๊ฐ์ฉ์ฑ์ ๋ํ ๊ณต๊ฒฉ์ ์๋ฒฝํ ๋ง์์ ์๋ ๊ฒ์ ์๋๋ค. ์๋ํ๋ฉด ์๋ฒ ์์ฒด์ ์ง์์ ์ธ ์์ฒญ ๊ณต๊ฒฉ์ด ์ค๋ ๊ฒ ์์ฒด๋ ๋ง์์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. 429 ์๋ต์ ํด๋ ์๋ฒ๋ ์์ฒญ์ ๊ณ์ ๋ฐ๊ธฐ ๋๋ฌธ์, ๋ฐ๋ผ์ ์ถ๊ฐ์ ์ผ๋ก ๋คํธ์ํฌ ๋จ์์ IP๋ฅผ ์ฐจ๋จํ๋ ์กฐ์น๊ฐ ํ์ํ๋ค.
ํ์ง๋ง ๊ทธ๋๋ ์๋ฒ๋ 429 ์๋ต์ ํตํด ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ฒ ๋ด๋ถ ๋ก์ง์ ๋ค์ค์๊ณ ๋ค๋๋ ๊ฒ์ ๋ฐฉ์ด๋ ํ ์์๊ธฐ ๋๋ฌธ์, ๋คํธ์ํฌ ์์ง๋์ด๋ IP๋ ๋๋ฉ์ธ์ ๋ํ ์ ํ ์ฒ๋ฆฌ๋ฅผํ๊ณ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ 429 ์๋ต์ ํตํด API ์ ํ์ ์ค์ ํ ํ์์ฑ์ด ์๋ค.
431 Request Header Fields Too Large
- Request Header Fields Too Large โข ํค๋ ํ๋๊ฐ ๋๋ฌด ์ปค์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ์์
- ์ด ์์ฒญ ํค๋ ํ๋ ์๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ ๋๋ ๋จ์ผ ํค๋ ํ๋๊ฐ ๋๋ฌด ํฐ ๊ฒฝ์ฐ ์๋ต๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ์์ฒญ ํค๋ ํ๋์ ํฌ๊ธฐ๋ฅผ ์ค์ธ ํ ์ฌ์์ฒญ ํ๋ฉด ๋๋ค.
451 Unavailable For Legal Reasons
- Unavailable For Legal Reasons โข ๋ฒ์ ์ธ ์ด์ ๋ก ๋นํ์ฉ๋จ
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฒ์ ์ด์ ๋ก ์ฌ์ฉํ ์ ์๋ ๋ถ๋ฒ์ ์ธ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ์์ ๋ํ๋ธ๋ค. (์ ๋ถ์ ์ํด ๊ฒ์ด๋ ์นํ์ด์ง ๋ฑ)
# ์ฐธ๊ณ ์๋ฃ
๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ - ๊น์ํ
HTTP ์๋ฒฝ๊ฐ์ด๋
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
https://sanghaklee.tistory.com/61
https://http.dev/status
https://www.oreilly.com/library/view/http-the-definitive/1565925092/ch06s07.html
https://www.keycdn.com/
https://blogs.mulesoft.com/api-integration/patterns/advanced-api-patterns-with-raml/