Django๋ฅผ ๋ฐฐ์ฐ๊ณ ์์ง๋ง ์์ง๋ API๊ฐ ๋ญ์ง, ๊ทธ ์ค์์๋ RESTful API๊ฐ ๋ญ์ง ์ ์ฒด๋ฅผ ๋ชจ๋ฅด๊ณ ์์๋ค.
์๊ฐ์ด ๋ถ์กฑํ์ง๋ง ์ผ๋จ ๋ด์ฉ์ ์ฎ๊ฒจ๋๊ณ ๊ณต๋ถํ๋ฉด์ ์ด์ ๋ถ์ฌ์ผ๊ฒ ๋ค. ์ ์ฐ๋ฉด ์์ ์๋ ๊ฒ์ด ๋๋ฏ๋ก ๐
Uniform Resource Identifier. ํด๋น ์ฌ์ดํธ์ ํน์ ์์์ ์์น๋ฅผ ๋ํ๋ด๋ ์ ์ผํ ์ฃผ์. ์ฒ์์ url์ ์คํ์ธ ์ค ์์๋ค... ^^!
HTTP request๊ฐ ์๋ํ๋ action์ ์ ์ํ๊ฒ. POST, GET ๋ฑ๋ฑ.
HTTP request์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ (body)
Application Programming Interface, ์์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค. ์ฆ ์์ฉํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก, ์ด์ ์ฒด์ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ์ดํ ์ ์๋๋ก ๋ง๋ ์ธํฐํ์ด์ค๋ฅผ ๋ปํ๋ค.
ํ์ฌ ์นํ์ด์ง ๊ฐ๋ฐ์ ๋ฐฐ์ฐ๊ณ ์์ผ๋ ์น API๋ก ํ์ ํด ์ ๋ฆฌํด๋ณด์๋ฉด, ์น API๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ๋ค๋ฅธ์๋น์ค์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๊ธฐ ์ํด ์ ์๋ ๋ช ์ธ๋ฅผ ๋งํ๋ค. ๋ธ๋ก๊ทธ API, ์ง๋ API ๋ฑ ํํ์ด์ง ๊ตฌ์ถ์ด๋ ๊ฐํธ ์ ์ถ๊ฐ ๊ฐ๋ฐํ์ง ์์๋ ์คํ API๋ฅผ ๊ฐ์ ธ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
REpresentational State Transfer์ ์ค์๋ง์ด๋ค. ์น์์์ ์ฌ์ฉ๋๋ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ HTTP URI๋ก ํํํ๊ณ ๊ทธ ๋ฆฌ์์ค์ ๋ํ ํ์๋ฅผ HTTP Method๋ก ์ ์ํ๋ ๋ฐฉ์. ์๊ฒฉํ ์๋ฏธ์ rest๋ ์์์ ์ ์ํ๊ณ ์์์ ๋ํ ์ฃผ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ ์ ๋ฐ์ ์ผ์ปซ๋๋ค.
์ฆ, ๋ฆฌ์์ค(HTTP URI๋ก ์ ์๋)๋ฅผ ์ด๋ป๊ฒ ํ๋ค(HTTP Method + Payload)
๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ๊น๋ํ๊ฒ ํํํ๋๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด method์ ๊ฒฝ์ฐ ์ต๊ทผ์๋ GET, POST๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ถ์ธ์ด๋ค.
์๋ฅผ ๋ค์ด ์ผ์ฑ์ ์ ์ฃผ์ ์ ๋ณด๋ฅผ ๋ฐ๊ธฐ ์ํ HTTP ์์ฒญ:
HTTP GET https://api.trueshort.com/stock/005930
์ ์ ์ ๋ณด์ ์ฃผ์ ์ข ๋ชฉ๋ค์ DB์ ์ ์ฅํ๋ HTTP ์์ฒญ:
HTTP POST https://api.trueshort.com/user/portfolio
{
"user_id" : 1,
"stocks": [
"005930",
"298730",
"378900"
]
}
RESTful API๋ ๊ทธ ์์ฒด๋ง์ผ๋ก๋ API์ ๋ชฉ์ ์ด ์ฝ๊ฒ ์ดํด๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ HTTP GET https://api.trueshort.com/stock/005930 ์์ฒญ์ ๊ฒฝ์ฐ, ๋ฌธ์๋ ์ฃผ์์ด ์์ด๋ "https://api.trueshort.com ๋ผ๋ API์์ ์ผ์ฑ์ ์ ์ฃผ์์ ๊ดํ ์ ๋ณด๋ฅผ HTTP ์์ฒญ์ ํตํด ๋ฐ์์ค๋ ๊ตฌ๋" ๋ผ๋ ํด์์ด ์ฝ๊ฒ ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด, https://api.trueshort.com/kospi/stock/005930 ์ด๋ผ๋ ๊ตฌ์กฐ๋ผ๋ฉด, KOSPI์ ์ํด์๋ ์ฃผ์(Stock) ์ค ์ผ์ฑ์ ์(005930)์ ๋ํ๋ด๋ ๊ฒ์ด๋ค.
https://api.shopping.com/books/novel/stephenking ์ด๋ผ๋ ๊ตฌ์กฐ ์ด๋ผ๋ฉด, ์ฑ ๋ค์ค ์์ค ๊ทธ๋ฆฌ๊ณ ์์ค์ค Stephen King์ ์์ค์ ๋ํ๋ด๋ ๊ตฌ์กฐ๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
RESTful HTTP API ๊ท์น์ด๋ค. ์๋ ๋ด์ฉ์ ๊ณ ๋ คํด์ url pattern์ ๋ง๋ค์ด์ผ ํ๋ค.
๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ์๋์ ๊ฐ์ ์ปจ๋ฒค์ ์ ์งํจ๋ค.
๋ฉด์ ์ง๋ฌธ, ๋ฐ๋ก ์ ๋ฆฌ!
django app์๋ render๊ฐ ์๋๋ฐ ๋ฌด์์ผ๊น
๋ฐฑ์๋์ API๋ฅผ ํตํด json๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น
๊ถ๊ธํ๊ณ ๋ชจ๋ฅด๋ ๊ฒ์ ๋๋ฌด ๋ง์๋ฐ ๋ด์ฉ์ด ๋ค ๋๋ฌด ๊น๋ค๋ณด๋๊น ์ฝ๊ฐ ํ๋ ์ด๊ณผ ... ๐ญ