๐ฃ ํ์ธํด์ฃผ์ธ์!
๋ณธ ๊ฐ์๋ ์๋ฐ ์คํ๋ง ์์ ์ ๋ณต ์๋ฆฌ์ฆ์ ์ธ ๋ฒ์งธ ๊ฐ์์
๋๋ค. ์ฐ์ํํ์ ๋ค ์ต์ฐ์ ๊ธฐ์ ์ด์ฌ ๊น์ํ์ ์คํ๋ง ์์ ์ ๋ณต ๋ก๋๋งต์ ๋จผ์ ํ์ธํด์ฃผ์ธ์. (๋ฐ๋ก๊ฐ๊ธฐ)
๋ชจ๋ ๊ฒ์ด HTTP ๊ธฐ๋ฐ
์ง๊ธ ์๋๋ ๋ชจ๋ ๊ฒ์ HTTP๋ก ์ ์กํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ์๋ HTML, ์ด๋ฏธ์ง, ์์, ํ์ผ๋ฟ๋ง ์๋๋ผ API๋ก ์ฑ๊ณผ ์๋ฒ๊ฐ ํต์ ํ ๋, ๋ ์๋ฒ์ ์๋ฒ๊ฐ ํต์ ํ ๋๋ ๋๋ถ๋ถ HTTP๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋์ ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์, ์น ํ๋ก ํธ์๋ ๊ฐ๋ฐ์, ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ๋ชจ๋ HTTP๋ฅผ ํ์๋ก ์ ์๊ณ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํนํ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ์คํ๋ง(Spring) ์น MVC, JSP, PHP, ASP.NET, Node.js, ํ์ด์ฌ ์ฅ๊ณ , ๋ฃจ๋น ์จ ๋ ์ผ์ฆ์ ๊ฐ์ ์น ํ๋ ์์ํฌ๋ ๊ธฐ์ ๋ค์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ฌํ ์น ๊ธฐ์ ๋ค์ ๋ชจ๋ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.
์ฒ์ ์น ๊ธฐ์ ์ ๊ณต๋ถํ๋ ๊ฐ๋ฐ์
HTTP๋ฅผ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ ์ํ์์ ์ฒ์ ์น ๊ธฐ์ ๋ค์ ๊ณต๋ถํ๋ฉด, ๊น์ด์๊ฒ ์๋ฆฌ๋ฅผ ์ดํดํ๊ธฐ ์ฝ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ํด๋น ๊ธฐ์ ๋ค์ ์ฌ๋ฌ๋ถ์ด ์ด๋ฏธ HTTP๋ฅผ ์ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ณ , ๊ธฐ๋ฅ ์ฌ์ฉ๋ฒ ์์ฃผ๋ก ์ค๋ช
ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฅผ ๋ค์ด ์คํ๋ง ์น MVC๋ฅผ ์ฒ์ ํ์ตํ๋ฉด HTTP์ ๊ด๋ จ๋ ์๋ง์ ๊ธฐ๋ฅ๊ณผ ์ฉ์ด๊ฐ ๋ฑ์ฅํ๋๋ฐ, ์ด๋ฐ ๊ธฐ๋ฅ์ด ์ ํ์ํ์ง, ์ด๋ฐ ์ฉ์ด๋ค์ด ์ด๋์์ ์ด๋ค ์ด์ ๋ก ๋์๋์ง ๋ช
ํํ๊ฒ ์ดํดํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ ๊น์ด์๋ ์ดํด๋ณด๋ค๋ ๋จ์ํ ๊ธฐ๋ฅ ์ฌ์ฉ๋ฒ ์์ฃผ๋ก ํ์ตํ๊ฒ ๋ฉ๋๋ค.
์ค๋ฌด์์ ์น ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์
์ค๋ฌด์์ ์น ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉฐ ์ค๋ ๊ธฐ๊ฐ ๊ฐ๋ฐ์ ํด๋, ๊ณ ๋ฏผ์ ์ฐ์์
๋๋ค. API URL์ ์ด๋ ๊ฒ ์ค๊ณํ๋ ๊ฒ ๋ง์๊น? ์ธ์ POST๋ฅผ ์ฌ์ฉํ๊ณ PUT๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น? HTTP ์ํ์ฝ๋๋ ์ด๋ค ๊ฒ์ ์ ํํ๋ ๊ฒ ์ข์๊น? ์ด๋ฐ ๊ณ ๋ฏผ์ ๊ณ์ ํ๊ฒ ๋ฉ๋๋ค.
์ค๋ฌด ๊ฐ๋ฐ์ ๊ผญ ํ์ํ HTTP ํต์ฌ ๋ด์ฉ์ ํ์ตํ๊ณ ๊ธฐ์ค์ ์ธ์ฐ๊ณ ์ถ์๋ฐ, ์ธํฐ๋ท ์๋ฃ๋ค์ ์กฐ๊ฐ์กฐ๊ฐ ํฉ์ด์ ธ ์๊ฑฐ๋ ์๋ชป๋ ๋ด์ฉ๋ค์ด ๋ง์ต๋๋ค. ๊ทธ๋ ๋ค๊ณ HTTP ์คํ์ด๋ ์์ค์ ์ฑ
๋ค๋ก ํ์ตํ๊ธฐ์๋ ์ค๋ฌด์ ๊ผญ ํ์ํ์ง ์์ ๋ด์ฉ๋ ๋ง๊ณ , ํ์ต๋๋ ๋ถ๋ด๋ฉ๋๋ค.
๊ฐ์ ๋ชฉํ
์ฌ๋ฌ๋ถ์ ํ์ HTTP ๊ธฐ๋ฐ ์์์ ๊ฐ๋ฐํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ ์ธ์ ๊ฐ ํ๋ฒ์ HTTP๋ฅผ ์ง์งํ๊ฒ ํ์ตํ๊ณ ์ ๋ฆฌํด์ผ ํฉ๋๋ค. ์ด ๊ฐ์์ ํ์ต ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- HTTP์ ์ ์ฒด ํ๋ฆ์ ์ดํดํ ์ ์์ต๋๋ค.
- ์ค๋ฌด์ ๊ผญ ํ์ํ ํต์ฌ ๋ด์ฉ ์์ฃผ๋ก ์ค๋ช
ํฉ๋๋ค.
- ์ต๋ํ ์ฝ๊ฒ ์ค๋ช
ํ๊ธฐ ์ํด ๋ง์ ๊ทธ๋ฆผ๊ณผ ์์๋ฅผ ํ์ฉํด์ ์ค๋ช
ํฉ๋๋ค.
์ด ๊ฐ์๋ฅผ ํตํด ์ฌ๋ฌ๋ถ์ ์ค๋ฌด์ ๊ผญ ํ์ํ HTTP ๊ธฐ๋ณธ ์ง์์ ๋ชจ๋ ์ต๋ํ ์ ์์ต๋๋ค.
๊ฐ์ ๋์
๋ฐฑ์๋
์๋ฒ ๊ฐ๋ฐ์
์น ํ๋ก ํธ์๋
ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์
๋ชจ๋ฐ์ผ ํ๋ก ํธ์๋
ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์
์น๊ธฐ์ ์ ๋ค๋ฃจ๋
๋ชจ๋ ๊ฐ๋ฐ์
์ฌ๋ฌ๋ถ์ด ์น ๋๋ ๋ชจ๋ฐ์ผ ์ฑ ํ๋ก ํธ์๋, ๋ฐฑ์๋์ ๊ฐ์ด HTTP ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ ์ง๊ตฐ์ด๋ผ๋ฉด ์ด ๊ฐ์๋ฅผ ํตํด HTTP๋ฅผ ๊น์ด์๊ฒ ์ดํดํ ์ ์์ต๋๋ค. ๊ทธ์ค์์๋ ์ง์ HTTP API๋ฅผ ์ค๊ณํ๊ณ , ์ ๊ณตํด์ผ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์์๊ฒ ๊ฐ์ฅ ํฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ์ ๊ตฌ์ฑ
1. ์ธํฐ๋ท ๋คํธ์ํฌ
๊ฐ์๋ ๋จผ์ ์ธํฐ๋ท ๋คํธ์ํฌ๋ถํฐ ์ค๋ช
ํฉ๋๋ค.
HTTP๋ ๊ฒฐ๊ตญ์๋ TCP/IP๋ UDP ๊ธฐ๋ฐ ์์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ์ธํฐ๋ท ๋คํธ์ํฌ๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค.
2. URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ
URI์ URL์ ๊ฐ๋
์ ํ์คํ๊ฒ ์ ๋ฆฌํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ์ ํตํด HTTP ๋ฉ์์ง๊ฐ ์ด๋ป๊ฒ TCP/IP ๋ฉ์์ง๋ก ๋ณํ๊ณ , ๋คํธ์ํฌ๋ฅผ ํตํด ๋ชฉ์ ์ง๊น์ง ๋์ฐฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ HTML ์๋ต์ ๋ฐ์์์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๋๋ ๊ณผ์ ์ ์ค๋ช
ํฉ๋๋ค. ์ด๋ฅผ ํตํด HTTP์ ๋คํธ์ํฌ์ ์ ์ฒด ์ฌ์ดํด์ ์ดํดํฉ๋๋ค.
3. HTTP ๊ธฐ๋ณธ
HTTP์ ๊ธฐ๋ณธ ๋์๊ณผ ํน์ง๋ค์ ์์๋ด
๋๋ค. ํนํ ์ํ์ ์ง(Stateful), ๋ฌด์ํ(Stateless)์ ๊ฐ๋
๊ณผ HTTP ๋ฉ์์ง์ ๋ํด์ ์์ธํ ์์๋ด
๋๋ค.
4. HTTP ๋ฉ์๋
๋จผ์ HTTP API๋ฅผ ๋ฌด์์ ํ๋ฒ ์ค๊ณํด ๋ด
๋๋ค. ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์ง ์ดํด๋ณด๊ณ , ์ HTTP ๋ฉ์๋๊ฐ ํ์ํ์ง ํ์ตํฉ๋๋ค.
๋ค์ํ HTTP ๋ฉ์๋๋ค์ ํ์ตํ๊ณ , GET, POST, PUT, PATCH, DELETE ๊ฐ์ ์ฃผ์ HTTP ๋ฉ์๋๋ค์ ์ธ์ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ค์ง๋๋ค.
5. HTTP ๋ฉ์๋ ํ์ฉ
์ค๋ฌด์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ํ์ฉ๋ฒ์ ๋ฐฐ์๋๋ค. HTML form์ ํตํด ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ, API๋ฅผ ํตํด ์ ์กํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ํ์ตํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ HTTP API URL์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ์์๋ฅผ ํตํด์ ํ์ตํฉ๋๋ค. ์ด๋ก ๊ณผ ์ค๋ฌด์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ ๋ฐฉ์๋ค๋ ์ค๋ช
ํฉ๋๋ค.
6. HTTP ์ํ์ฝ๋
HTTP ์ํ์ฝ๋์ ๋ํด ์ค๋ช
ํฉ๋๋ค. ์ด๋ค ์ํ์ฝ๋๋ฅผ ์ฃผ๋๊ฒ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ธ์ง ๊ทธ๋ฆฌ๊ณ 2xx, 3xx, 4xx, 5xx์ ์ ๋๋ก ๋ ์๋ฏธ์ ์ฌ์ฉ๋ฒ์ ๋ฐฐ์๋๋ค.
7. HTTP ํค๋ - ์ผ๋ฐ ํค๋
HTTP์๋ ์๋ง์ ํค๋๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ํํ, ์ฝํ
์ธ ํ์, ์ ์ก ๋ฐฉ์, ์ฟ ํค ๋ฑ์ ๋จ์ํ ๊ธฐ๋ฅ ์ค๋ช
์ด ์๋๋ผ ์์์ ์ฌ๋ก๋ฅผ ํตํด ํ์ตํฉ๋๋ค.
8. HTTP ํค๋ - ์บ์
HTTP ์บ์์ ๊ดํ ๊ธฐ๋ณธ ๋ด์ฉ์ ํ์ตํฉ๋๋ค. ์บ์๊ฐ ํ์ํ ์ด์ ๋ถํฐ ๋ธ๋ผ์ฐ์ ์บ์, ํ๋ก์ ์บ์, ์กฐ๊ฑด๋ถ ์์ฒญ, ์บ์ ๋ฌดํจํ ๋ฐฉ๋ฒ ๋ฑ์ ํ์ตํฉ๋๋ค.
์์ผ๋ก ์ด์ด์ง
์คํ๋ง ์์ ์ ๋ณต ์๋ฆฌ์ฆ
์คํ๋ง์ ์์ ํ ๋ง์คํฐํ ์ ์๋ ์๋ฆฌ์ฆ๋ฅผ ์ค๋นํ๊ณ ์์ต๋๋ค. ์ค์ ์ค๋ฌด์์ ์ฌ์ฉํ๋ ํต์ฌ ์คํ๋ง ๊ธฐ๋ฅ์ ์ค์ฌ์ผ๋ก, ์ค๋ฌด์์ ์ฐ์ด์ง ์๊ฑฐ๋ ์ค๋๋ ๊ธฐ๋ฅ์ ๊ณผ๊ฐํ๊ฒ ์๋ตํ ์ค๋ฌด ๋
ธํ์ฐ๋ฅผ ์ ์ํด๋๋ฆด ์์ ์
๋๋ค.
๊ฐ์ ์์
์ค์ ! ์คํ๋ง ์น MVC - 1ํธ
- ๋ชฉํ: ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ์น ๊ธฐ์ ์ ์์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ๊ฐ์์
๋๋ค.
- ์น ๊ธฐ์ด๋ถํฐ ์ค๋ฌด๊น์ง: ์ค๋ฌด ๊ฐ๋ฐ์ ์ํ ๋ด์ฉ์ด ๋ง์ง๋ง, ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๊ฒฝํ์ด ์๋ ๊ฐ๋ฐ์๋ ์ ์ํ ์ ์๊ฒ ๊ตฌ์ฑํ์์ต๋๋ค.
- ์๋ฐ ์น ๊ธฐ์ ์ด์ผ๊ธฐ: ์๋ธ๋ฆฟ, ํํฐ ๋ฑ ์๋ฐ ๊ธฐ๋ณธ ์น ๊ธฐ์ ๋ถํฐ ์์ํด ์ ์คํ๋ง MVC๊ฐ ๋์ค๊ฒ ๋์๋์ง๋ฅผ ์ค๋ช
ํฉ๋๋ค.
- ์ค๋ฌด ์์ ์ค์ฌ: ์ค๋ฌด์์ ์คํ๋ง์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ๊ณผ์ ์ ์์ ๋ฅผ ํตํด ์์ฐ์ค๋ฝ๊ฒ ํ์ตํ๋ฉฐ, ์ค๋ฌด์์์ Best Practice๋ฅผ ์ ์ํด๋๋ฆฝ๋๋ค.
- ๊ฐ๊ฒฐํจ: ์ค๋ฌด์์ ์ฌ์ฉํ์ง ์๋ ์ค๋๋ ๊ธฐ๋ฅ์ ๊ณผ๊ฐํ๊ฒ ์ ์ธํ์ต๋๋ค. ์ต์ ์ค๋ฌด์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ด์ฉ์ ์์ฃผ๋ก ์ค๋ช
ํฉ๋๋ค.
์ฐ๊ด ๋ก๋๋งต