Restfulํ API๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ HTTP Response Code์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
์ ํํ HTTP Response Code๊ฐ Client์ ์ ๋ฌ๋์ด์ผ Front-end ๊ฐ๋ฐ์๋ค์ด ๊ฐ๋ฐ ๋ฐ ํ๋จ์ ๋์์ด ๋๊ธฐ ๋๋ฌธ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
๊ธฐ๋ณธ์ ์ธ HTTP Response Code์ ์ฒด๊ณ๋ ๋ค์๊ณผ ๊ฐ๋ค.
Code ๋์ญ | ๋ถ๋ฅ | ์ค๋ช |
---|---|---|
1 x x | ์ ๋ณด | Client์์ ์์ฒญ์ ๋ฐ๊ณ ํ๋ก์ธ์ค๋ฅผ ๊ณ์ ์งํ |
2 x x | ์ฑ๊ณต | Client์์ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ๊ณ , ์ธ์ํ์ผ๋ฉฐ ์์ฒญ์ ์์ฉ |
3 x x | ๋ฆฌ๋ค์ด๋ ์ | Client์ ์์ฒญ์ ์๋ฃํ๊ธฐ ์ํ ์ถ๊ฐ ์์ ํ์ |
4 x x | ํด๋ผ์ด์ธํธ ์ค๋ฅ | Client์ ์์ฒญ์ ๋ฌธ๋ฒ์ด ์๋ชป๋๊ฑฐ๋, ์ฒ๋ฆฌ ๋ถ๊ฐ |
5 x x | ์๋ฒ ์ค๋ฅ | Client์ ์ ํจํ ์์ฒญ์ ๋ฐ์์ผ๋, ์๋ฒ์์ ๋ช ๋ฐฑํ ์ค๋ฅ ๋ฐ์ |
Server๊ฐ ์งํ ์ค์์ ์๋ฏธํ๋ Response Code.
ํ์ฌ๊น์ง์ ์งํ์ํ์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ, Client๊ฐ ์์ฒญ์ ํ๊ฑฐ๋ ์ด๋ฏธ ์์ฒญ์ ์๋ฃํ ๊ฒฝ์ฐ์๋ ๋ฌด์ํด๋ ๋๋ค๋ ๊ฒ์ ์๋ ค์ค.
Client๊ฐ ๋ณด๋ธ ์
๊ทธ๋ ์ด๋ ์์ฒญ ํค๋์ ๋ํ ์๋ต์ผ๋ก ๋ณด๋ด์ง๋๋ค.
โ WebSocket์ผ๋ก ์ ํ์์ ์ฌ์ฉ๋๋ Response Code
์๋ฒ๊ฐ ์์ฒญ์ ์์ ํ์์ผ๋ฉฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์ง๋ง, ์์ง ์ ๋๋ก ๋ ์๋ต์ ์๋ ค์ค ์ ์์
Client ์์ฒญ์ด ์ฑ๊ณต์ ์ด๋ฏ๋ก ์์ฒญ์ ๋ํ ์ ๋ณด๋ฅผ ์๋ต์ผ๋ก ๋ฐํ.
Client ์์ฒญ์ด ์ฑ๊ณต์ ์ด๋ฉฐ, ํด๋น ์์ฒญ์ผ๋ก ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋จ.
โ ์ผ๋ฐ์ ์ผ๋ก Post, Put ์์ฒญ์ ์ฌ์ฉ๋จ.
Client ์์ฒญ์ ์์ ํ์์ผ๋ ๊ทธ์ ์ํ์ฌ ํ๋ํ ์ ์์.
โ ํด๋น ์์ฒญ์ ๋ํ ์๋ต์ ๋น๋๊ธฐ๋ก Client์๊ฒ ์ค์ง ์ฅ๋ดํ ์ ์์.
โ ์ด Response Code๋ ์๋ฒ๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ์ฒ๋ฆฌ, ์์ฒญ, ๋ฐฐ์น ํ๋ก์ธ์ค๋ฅผ ํ๊ณ ์๋ ๊ฒฝ์ฐ ๋๋ฌธ์ ๋ง๋ค์ด์ง.
Client๋ก ๋ถํฐ ๋ฐ์ ๋ฉํ ์ ๋ณด ์ธํธ๊ฐ ์ค๋ฆฌ์ง ์๋ฒ์ ๊ฒ๊ณผ ์ผ์นํ์ง ์์ง๋ง ๋ก์ปฌ์ด๋ ์๋ ํํฐ ๋ณต์ฌ๋ณธ์์ ๋ชจ์์ก์์ ์๋ฏธํ๋ฉฐ, ์์ ๊ฐ์ ์กฐ๊ฑด์์ ํด๋น Reponse Code๊ฐ ์๋ 200 - OK Response Code๋ฅผ ๋ฐ๋์ ์ฐ์ ํด์ผํ๋ค.
Client์ ์์ฒญ์ ๋ํด์ ๋ณด๋ด์ค ์ ์๋ ์ปจํ
์ธ ๊ฐ ์์์ ์๋ฏธํ๋ค.
ํ์ง๋ง ํค๋๋ ์๋ฏธ ์์ ์ ์๊ณ , ์บ์๋ ํค๋๋ฅผ ์๋ก์ด ํค๋๋ก ์
๋ฐ์ดํธ ํ ์ ์๋ค.
Client์ ์์ฒญ์ ์์ํ ์ดํ์ Client์๊ฒ ์ด ์์ณฅ์ ๋ณด๋ธ ๋ฌธ์ ๋ทฐ๋ฅผ ๋ฆฌ์ ํ๋ผ๋ ๋ช ๋ น.
Client์์ ๋ณต์์ ์คํธ๋ฆผ์ ๋ถํ ๋ค์ด๋ก๋ ํ๊ณ ์ ๋ฒ์ ํค๋๋ฅผ ์ ์กํ์ ๋ ์ฌ์ฉ.
Client๊ฐ ์ด์ด๋ฐ๊ธฐ๋ฅผ ์๋ํ๋ฉด Web Server๊ฐ ์ด์ ๋ํ ์๋ต์ฝ๋๋ก ํด๋น ์ฝ๋์ ํจ๊ป Range ํค๋์ ๋ช
์๋ ๋ฐ์ดํฐ์ ๋ถ๋ถ๋ถํฐ ์ ์ก์ ์์ํจ.
์ฌ๋ฌ ๋ฆฌ์์ค๊ฐ ์ฌ๋ฌ ์ํ ์ฝ๋์ธ ์ํฉ์ด ์ ์ ํ ๊ฒฝ์ฐ์ ํด๋น๋๋ ์ ๋ณด๋ฅผ ์ ๋ฌ.
โ ํด๋น ์ฝ๋๋ WebDAV์ ์ฌ์ฉ.
Porstat ( Property + Status ํฉ์ฑ์ด ) ์๋ต ์์ฑ์ผ๋ก ๋์ผ ์ปฌ๋ ์
์ผ๋ก ๋ฐ์ธ๋๋ ๋ณต์์ ๋ด๋ถ ๋ฉค๋ฒ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ด๊ฑฐํ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์ฌ์ฉ.
โ ํด๋น ์ฝ๋๋ WebDAV์ ์ฌ์ฉ.
Server๊ฐ Get์์ฒญ์ ๋ํ ๋ฆฌ์์ค์ ์๋ฌด๋ฅผ ๋ค ํ๊ณ , ์๋ต์ด ํ๋ ๋๋ ๊ทธ ์ด์์ ์ธ์คํด์ค ์กฐ์์ด ํ์ฌ ์ธ์คํด์ค์ ์ ์ฉ ๋์์ ์๋ ค์ค.
request์ ๋ํด์ ํ๋ ์ด์์ ์๋ต์ด ๊ฐ๋ฅํ๋ฉฐ, Client๋ ๊ทธ์ค ํ๋๋ฅผ ๋ฐ๋์ ์ ํํด์ผํจ.
์๋ต ์ค ํ๋๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ์ค์ ์กด์ฌํ์ง ์์.
request์ URI๊ฐ ๋ณ๊ฒฝ๋์์์ ์๋ฏธํจ.
Restful ๋จ๊ณ์ ๋ฐ๋ผ์ ์๋ก์ด URI๊ฐ ์ ๊ณต๋ ์ ์์.
request์ URI๊ฐ ์ผ์์ ์ผ๋ก ๋ณ๊ฒฝ๋์๊ฑฐ๋ ๋ง๋๋์ค์ด๋ผ๋ ๊ฒ์ ์๋งํ๋ฏ๋ก Client๋ ํฅํ์ ์์ฒญ๋ ํด๋น URI๋ก ์งํํ๋ฉด ๋จ.
Client๊ฐ ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ๋ค๋ฅธ URI์์ Get ์์ฒญ์ ํตํด์ ์ป์ด์ผํ ๋ Server๊ฐ Client๋ก ์ง์ ๋ณด๋ด๋ ์๋ต.
์บ์์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, Client์๊ฒ ์๋ต์ด ์์ ๋์ง ์์์์ ์๋ ค์ค๋ค.
๋ฐ๋ผ์ Client๋ ๊ณ์ํด์ ์บ์๋ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค.
์ด์ ๋ฒ์ ์ HTTP ๊ธฐ์ ์ฌ์์์ ์ ์๋์์ผ๋ฉฐ, request์ ์๋ต์ ๋ฐ๋์ ํ๋ก์๋ฅผ ํตํด์ ์ ์ํด์ผํ๋ค๊ณ ์๋ ค์ฃผ๋ ์๋ต.
ํด๋น ์๋ต์ proxy์ in-band ์ค์ ์ ๋ํ ๋ณด์์์ ๊ฑฑ์ ์ผ๋ก ์ธํ์ฌ ์ ์ ์ฌ๋ผ์ ธ๊ฐ๋ ์ถ์ธ.
ํด๋น ์๋ต์ ๋์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ ํ์ฌ๋ ์ถํ ์ฌ์ฉ์ ์ํด ์์ฝ๋์ด ์๋ค๋ ์๋ต.
์ ์๋ต์ HTTP 1.1 ๊ธฐ์ ์ฌ์ ์ด์ ๋ฒ์ ์์ ์ฌ์ฉ๋์๋ค.
Client๊ฐ requestํ ๋ฆฌ์์ค๊ฐ ๋ค๋ฅธ URI์ ์์ผ๋ฉฐ, ์ด์ ์์ฒญ๊ณผ ๋์ผํ HTTP Method๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญํด์ผํ ๋ Server๊ฐ Client์ ์ด ์๋ต์ ์ง์ ๋ณด๋ธ๋ค.
ํด๋น ์๋ต์ 302 ์๋ต๊ณผ ๋์ผํ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ Client๊ฐ HTTP Method๋ฅผ ๋ณ๊ฒฝํ์ง ๋ง์์ผํ๋ค๋ ์ ๋ง ๋ค๋ฅด๋ค.
Client๊ฐ requestํ ๋ฆฌ์์ค๊ฐ ์๊ตฌํ ๋ค๋ฅธ URI๋ก ๋ณ๊ฒฝ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
ํด๋น ์๋ต์ 301 ์๋ต๊ณผ ๋์ผํ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ Client๊ฐ HTTP Method๋ฅผ ๋ณ๊ฒฝํ์ง ๋ง์์ผํ๋ค๋ ์ ๋ง ๋ค๋ฅด๋ค.
Client๊ฐ ์๋ชป๋ ๋ฌธ๋ฒ์ผ๋ก ์ ๊ทผํ์ฌ ์๋ฒ๊ฐ request๋ฅผ ์ดํดํ ์ ์๋ค๋ ์๋ต.
Client๊ฐ ์ธ์ฆ๋์ง ์์๋ค๋ ์๋ฏธ์ ์๋ต.
โ HTTP ํ์ค์์๋ '๋ฏธ์น์ธ'์ผ๋ก ๋ช
ํํ๊ฒ ํ๊ณ ์์ง๋ง ์๋ฏธ์ '๋ฏธ์ธ์ฆ'์ผ๋ก ์ฌ์ฉ๋จ.
ํด๋น ์๋ต์ฝ๋๋ ๋์งํธ ๊ฒฐ์ ์์คํ ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ง๋ค์ด์ก์ง๋ง ํ์ฌ๋ ์ฌ์ฉ๋๊ณ ์์ง ์๋ค.
Client๊ฐ ๋ฆฌ์์ค์ ์ ๊ทผํ ๊ถ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ ์๋ต.
โ 401 ๊ณผ ๋ค๋ฅธ ์ ์ Client๊ฐ ๋๊ตฐ์ง๋ Server์์ ์ธ์ํ๊ณ ์์.
๋ธ๋ผ์ฐ์ ์์๋ ์๋ ค์ง์ง ์์ URI๋ฅผ ์๋ฏธํ๋ฉฐ, API์ ์ข
์ ์ ์ ์ ํ์ง๋ง ๋ฆฌ์์ค๋ฅผ Server๊ฐ ์ฐพ์ ์ ์์์ ์๋ฏธํ๋ค.
โ Server๋ค์ ์ธ์ฆ๋ฐ์ง ์์ Client๋ก ๋ถํฐ ๋ฆฌ์์ค๋ฅผ ์จ๊ธฐ๊ธฐ์ํ์ฌ 403 ๋์ ์ ์ ์กํ ์ ๋ ์๋ค.
Client์ request์ HTTP Method๊ฐ ์ ์ ํ์ง ์์๋ Server์์ ๋ณด๋ด์ฃผ๋ ์๋ต.
Client์ request์ ๋ง๋ ๊ท๊ฒฉ์ ์ด๋ ํ ๋ฆฌ์์ค๋ ์กด์ฌํ์ง ์์๋ Server์์ ๋ณด๋ด๋ ์๋ต.
401 ์๋ต๊ณผ ๋น์ทํ์ง๋ง proxy์ ์ํด ์๋ฃ๋ ์ธ์ฆ์ด ํ์ํ๋ค.
Client์ request ์๊ฐ์ด ์ค๋๋ ์ฐ๊ฒฐ์ ์๋ต์ผ๋ก ๋ณด๋ด์ง๋ฉฐ, Server๊ฐ ์ฌ์ฉ๋์ง ์๋ ์ฐ๊ฒฐ์ ๋๊ณ ์ถ์ดํ ๋๋ ์ฌ์ฉํจ.
Server์ ์ํ์ ์ถฉ๋๋ ๋ ๋ณด๋ด๋๋ฐ ๋ํ์ ์ผ๋ก ๋ฐ์ดํฐ ์ถฉ๋์์ ์ฃผ๋ก ์ฌ์ฉํ์๋ค.
Client๊ฐ ์ํ ๋ฆฌ์์ค๊ฐ Server์์ ์๊ตฌ์ ์ผ๋ก ์ญ์ ๋๊ณ , ์ ๋ฌํด ์ค์ ์๋ ์ฃผ์ ์ญ์ ์กด์ฌํ์ง ์์ ๋ ์ฌ์ฉํ๋ ์๋ต.
Client์ request header์ ์ ๋ณด๊ฐ ์ ๋๋ก ์ฑ์์ง์ง ์์์ ๋ ๋ฐ์ํ๋ ์๋ต.
Client์ header์ ์๋ ์ ์ ์กฐ๊ฑด์ด Server์ ์ ์ ์กฐ๊ฑด๊ณผ ๋ง์ง ์์ ๋ ์๋ต.
Client์ request payload๊ฐ ๋๋ฌด ํด ๋์ ์๋ต.
Server์์๋ ์ฐ๊ฒฐ์ ๋์ ๊ฒ.
Client์ request URI๊ฐ ์๋ฒ์์ ์ฒ๋ฆฌํ๊ธฐ๋ก ํ ๊ธธ์ด๋ณด๋ค ๊ธธ ๊ฒฝ์ฐ์ ์๋ต.
Client์ request media Type์ ์ง์ํ์ง ์์ ๊ฒฝ์ฐ์ ์๋ต.
Client์ request URI ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋ฌ์์๋ ์๋ ์ํฉ์ ๋ณด๋ด๋ ์๋ต.
โ ํ์ ์ ์ ์๋๋ ๊ฐ๋ฅ์ฑ์ด ์์ ๊ฒฝ์ฐ ์ฌ์ฉ.
Expect ์์ฒญ ํค๋ ํ๋๋ก ์์ฒญํ ์์์ด Server์์๋ ์ ๋นํ์ง ์์.
์๋ฅ ๊ฐ์ผ๋ฏ๋ก ํจ์ค ~
Client์ request๋ Server์์ ์๋ต์ ์์ฑํ ์ ์์ ๊ฒฝ์ฐ์ ์๋ต.
๋ฌธ๋ฒ ์ค๋ฅ๋ก ์ธํ์ฌ ์๋ต์ ์์ฑ ๋ถ๊ฐํ ๊ฒฝ์ฐ์ ์๋ต.
๋ฆฌ์์ค์ ์ ๊ทผ์ด ๋งํ์๊ฑฐ๋, ํด๋น ๋ฆฌ์์ค ์ ๊ทผ์ด ์ ๊ฒจ์๋ ๊ฒฝ์ฐ์ ์๋ต.
์ด์ ์ request๊ฐ ์คํจํ์ฌ์ ์ฐ์๋ request๊ฐ ์คํจํ์์ ๊ฒฝ์ฐ์ ์๋ต.
ํด๋น request์ protocol์ด ๋ง์ง ์์์ server๊ฐ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ฑฐ์ ํ์์ง๋ง
Client๊ฐ protocol์ ์
๊ทธ๋ ์ด๋ ํ์ฌ ์ฌ์์ฒญ ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๋์ ์๋ต.
โ Server๊ฐ ์๋ต์ ํด๋น protocol์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๋ด์ฃผ์ด์ผ ํจ.
์ฌ๋ฌ๊ณณ์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ๋ฐ์ํ ์ ์๋ '์
๋ฐ์ดํธ ์์ค'์ ์๋ฐฉํ๊ธฐ ์ํ ์๋ต
์ง์ ๋ ์๊ฐ์์ ๋๋ฌด ๋ง์ request๊ฐ ์ฌ ๊ฒฝ์ฐ์ ์๋ต
request์ header์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํด ๊ฒฝ์ฐ, Server๊ฐ ์ฒ๋ฆฌํ์ง ์๊ฒ ๋ค๋ ์๋ต.
์ ๋ถ๋ถ์ฒ๋ก๋ถํฐ ๊ธ์ง๋์ด ๋ถ๋ฒ์ ์ธ ๋ฆฌ์์ค๋ฅผ Client๊ฐ requestํ ๋ ์ฌ์ฉํ๋ ์๋ต.
Server๊ฐ ์ ์ ์๋ ์ด์ ๋ก ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๊ฒฝ์ฐ์ ์๋ต.
Server๊ฐ request์ ๋ํ ํ์ํ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์์ ๋ํ๋.
Server๊ฐ ๊ฒ์ดํธ์จ์ด๋ก๋ถํฐ ์๋ชป๋ ์๋ต์ ์์ ํ์์ ์๋ฏธํ๋ฉฐ ์ธํฐ๋ท์์ Server๊ฐ ๋ค๋ฅธ Server๋ก ๋ถํฐ ์ ํจํ์ง ์์ ์๋ต์ ๋ฐ์ ๊ฒฝ์ฐ ๋ฐ์ํจ.
Server๊ฐ request๋ฅผ ์ฒ๋ฆฌํ ์ค๋น๊ฐ ๋์ง ์์์์ ์๋ฏธํ๋ ์๋ต.
โ ํด๋น ์๋ต์ ๋ํด์๋ Client๊ฐ ๋ฌธ์ ๋ฅผ ์ ํํ๊ฒ ์ ์ ์๋๋ก ์๋ต์ ์๋ ค์ฃผ์ด์ผํจ.
Server๊ฐ ๋ค๋ฅธ Server์ ์ ์ ํ ๋ ์๋ต์ ๋ฐ์ง ๋ชปํ์์ ์๋ฏธํ๋ฏ๋ก ์ค์ ๋ก Server์ ๋ฌธ์ ์ด๊ฑฐ๋ ๋คํธ์ํฌ ๋ฌธ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ์์ ๋ ํด๋น ์๋ต์ ๋ณด๋.
Server๊ฐ ์ง์ํ์ง ์๋ Version์ HTTP ์์ฒญ์ด ๋ค์ด์์ ๋ ์๋ต์ ๋ณด๋.
Server์ ๋ด๋ถ ๊ตฌ์ฑ์ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ๋ณด๋ด๋ ์๋ต.
์ํ๋ ๋ฆฌ์์ค์ ๋ด๋ถ ๊ตฌ์ฑ ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋ณด๋ด๋ ์๋ต.
Server๊ฐ ์๋ต์ ๋ง๋๋ ๋์ ๋ฌดํ ๋ฃจํ๊ฐ ๊ฐ์ง๋๋ ๊ฒฝ์ฐ ๋ณด๋ด๋ ์๋ต.
Server๊ฐ ํด๋น ์๋ต์ ๋ง๋๋ ค๋ฉด ์ถ๊ฐ ํ์ฅ์ด ํ์ํ ๊ฒฝ์ฐ์ ์๋ต.
Server๊ฐ ๋คํธ์ํฌ ์ธ์ฆ์ด ์๋์ด์ ์๋ต์ ์ค ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์
Restfulํ API๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ HTTP Response Code์ ๋ํด์ ์ ๋ฆฌํ์๋ค.
์๊ฐ๋ณด๋ค ๋ค์ํ Response Code๊ฐ ์์ผ๋ฉฐ, ์ ์ ๋ฆฌ๋์ด ์์ง๋ง ์ค๋ฌด๋ณด๋ค๋ ์ด๋ก ์ ์ผ๋ก ๋๋ฌด ๋ง์ด ์ ๊ทผํด์ ์ ํ ๊ฒ์ด ์๋๊ฐ๋ผ๋ ์๊ฐ์ด ๋ค๊ธฐ๋ ํ์๋ค.
์ ์์งํด์ ์ฌ์ฉํด์ผ๊ฒ ๋ค.