RESTful Api๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ฑ์์ ์ฌ์ฉ๋๋ ๋๋์ ๋ฐ์ดํฐ๋ ํ์ผ์ ๋ฐ๋ก ๊ตฌ์ฑํ์ฌ ์ฑ ๋ด๋ถ์ ๋ฃ์ด๋๊ณ , ์ด ํ์ผ์ ์ฝ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค. ์ฝํ
์ธ ์๋น์ค ์ฑ์ ์ต์ ์ ๋ฐ์ดํฐ๊ฐ ํต์ฌ์์์ด๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ค๋ฉด ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋ ๋ง๋ค ์ฌ์ฉ์๋ ์ฑ ์
๋ฐ์ดํธ๋ฅผ ๋ฐ์์ผํ๊ณ , ๊ทธ๋ด์๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ์ ์ ๋๋น ์ง๊ฒ๋๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ๋๊ณ , ์๋ฒ๋ก๋ถํฐ ๋ค์ด๋ฐ์ ์ฌ์ฉํ๋ค๋ฉด ์ด๋ฅผ ํด๊ฒฐ ํ ์ ์๋ค. ์๋ฒ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์
๋ก๋ํ๊ณ , ์ฑ์ ์ด ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์๋ด๋ฉด ์ฌ์ฉ์๋ ์ฑ์๋ํ ์
๋ฐ์ดํธ ์์ด ์ต์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์๋ค.
๋น์ฐ๊ฒฐ์ฑ ์งํฅ ํต์
๋ฒ์ฉ์ ์ธ ๋ชจ๋ฐ์ผ ํต์ ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์์ ๋น์ฐ๊ฒฐ์ฑ ์งํฅ ํต์ (HTTP / HTTPS ํ๋กํ ์ฝ)์ด๋ค. ์์ฒญ์ ๋ฐ์ผ๋ฉด, ๋ง๋ ์๋ต์ ๋ณด๋ธ ํ์ ๋ฐ๋ก ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ธฐ ๋๋ฌธ์ ๋น์ฐ๊ฒฐ์ฑ ์งํฅ ํต์ ์ด๋ผ ๋ถ๋ฆฐ๋ค.
์น ์๋น์ค(Web Service)
์ผ๋ฐ์ ์ธ ์น์ฌ์ดํธ๋ HTMLํ์ผ์ ๋ ๋๋งํ์ฌ ์ฌ๋ฌ๊ฐ์ง UI๋ฅผ ๋ธ๋ผ์ฐ์ ์ ๋์ด๋ค. ์น ์๋น์ค๋ HTTP/HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ง์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ์ค๊ณ๋ ๋ชจ๋์ ๋งํ๋ค.
์ด๋ฌํ ์น ์๋น์ค๋ ์ํคํ
์ณ์ ๋ฐ๋ผ์ ๋๊ฐ์ง ๋ฐฉ์์ผ๋ก ๋๋๋ค
- RESTful (Representational State Transfer)
- SOAP (Simple Object Access Protocol)
๋ฐ์ดํฐ ํ์
๋ ๋๊ฐ์ง๊ฐ ์๋ค
RESTful์์๋ ์ฃผ๋ก JSON๊ณผ ํจ๊ป ์ฐ์ด๊ณ , SOAP์์๋ XML์ด ์ฌ์ฉ๋๋ค.
RESTful
REST๋ ์ค์ง์ ์ธ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์๋๊ณ , ๋คํธ์ํฌ ์์์ ์ ์ํ๊ณ ์์์ ๋ํ ์ฃผ์ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ด๋ค. ์น ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง๋ง, ์ฟ ํค, SOAP๋ฑ์ ์ ์ก ํ๋กํ ์ฝ ์์ด ์ ์ก์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ค๊ธฐ ์ํ ๊ฐ๋จํ ํ์์ ์ธํฐํ์ด์ค๋ฅผ ๋งํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋ฒ์๊ฒ ์์ฒญํ๋ ค๋ ์ ๋ณด๋ฅผ URI๋ฅผ ํตํด์ ๋ํ๋ธ๋ค. URI๋ ์ฌ๋์๋ฅผ ํตํด ๋จ์๋ฅผ ๊ตฌ๋ถํ๋ค. ์๋ฅผ๋ค์ด http://mvmv.co.kr/movie/2021/action
์ URI๋ ์ํ, 2021, ์ก์
์ด๋ผ๋ ๊ณ์ธต์ ๋ณด๋ฅผ ๋ํ๋ด๊ณ ์๋ค. ์ด ์์ฒญํ์์ ์๋ฒ์ ์์ฒญ ๊ท๊ฒฉ์ด๊ธฐ ๋๋ฌธ์ ์์ฒญํ๋ ํด๋ผ์ด์ธํธ์์๋ ์ด๋ฅผ ์ง์ผ์ผํ๋ค.
(์ค๋ฌด์์๋ ์๋ฒ ๊ฐ๋ฐ์๊ฐ ์์ฒญ ํ์์ ์ ์ - > ์ฑ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ฅด๋ ๊ตฌ์กฐ)
RESTful API์์ HTTP๋ฉ์๋์ ์ข
๋ฅ
- GET : ํน์ ๋ฆฌ์์ค์ ๋ํ์ ์ธ ์ ๋ณด๋ฅผ ์์ฒญํ ๋
- POST : ID ์์ด ๋ฆฌ์์ค๋ฅผ ์์ฑ / ์์
- PUT : ID ๊ธฐ๋ฐ์ผ๋ก ๋ฆฌ์์ค ์์ฑ / ์์
- DELETE : ๋ฆฌ์์ค ์ญ์
- HEAD : GET ๋ฐฉ์ ์์ฒญ์ด์ง๋ง ๋ด์ฉ ์์ด ๋ฉํ ์ ๋ณด ์์ฒญ
- OPTION : ํน์ URL์ ๋ํ ๋ณด์กฐ ๋ฉ์๋ ์ญํ
HTTP๋ฉ์๋๊ฐ ๋ฐ๋ก ์๋ ์ด์
URI๊ตฌ์ฑ ๊ถ๊ณ ์ ๋ฐ๋ฅด๋ฉด RESTful์ ๊ตฌ์ฑํ๊ธฐ ์ํ URI์๋ ์ ๋ณด์ ๋ถ๋ฅ ์ฒด๊ณ๋ง ํฌํจ๋์ด์ผ ํ๋ค.์ฆ, ๋์์ ๊ดํ ๋ช
์ธ๋ URI๊ฐ ์๋ ์ HTTP๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ ๊ตฌ๋ถํ ๊ฒ์ ๊ถ์ฅํ๊ณ ์๋ค.
์๋ฅผ ๋ค๋ฉด http://facebook/article/create
์ฒ๋ผ URI์ ๋์์ด ํฌํจ๋๋ฉด ์๋๋ค.
REST์ ํน์ง
- ์น์ ๋ชจ๋ ๋ฆฌ์์ค(๋ฌธ์,๊ทธ๋ฆผ,๋ฐ์ดํฐ)๋ URI๋ก ํํํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋ค. Addressabililty
- ๋ชจ๋ ๋ฆฌ์์ค๋ ๊ตฌ์กฐ์ ์ด๋ฉฐ, ์ ๊ธฐ์ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๋ค. Connectedness
- ๋น์ํ ์งํฅ์ ์ธ ๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ๋ค. Statelessness
- ์ ํด์ง ๋ฉ์๋(HTTP Method)๋ง์ ์ฌ์ฉํด ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ์ํคํ
์ณ์ด๋ค. Homogeneous interface
์ํคํ
์ฒ (architecture) : ์๋จ์ด๋ก๋ "๊ฑด์ถํ"์ด๋ผ๋ ๋ป. ๋ชฉ์ ์ ์ด๋ฃจ๊ธฐ ์ํ ์์คํ
์ ์ค๊ณ์ ๋์์ธ(์ฒญ์ฌ์ง ? ์ค๊ณ๋? ์ ๋๋ก ์ดํดํ๋ฉด ๋ ๊ฒ๊ฐ๋ค.)