API๋?
API๋ ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ํ์ํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ณ , ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ฃผ๋ ์ค๊ฐ์ธ ์ญํ ์ ํ๋ค. ๊ฐ๋ฐ์๋ค์ด ์ด API๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ณต์กํ ์์ ์ ์ง์ ๋ค ํ์ง ์๊ณ ํจ์ฌ ์ฝ๊ฒ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ค.
์ฝ๊ฒ ๋งํด, API๋ ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ๋์์ฃผ๊ณ , ํ์ํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋งค๊ฐ์ฒด์ด๋ค.
Windows API๋?
Windows API(๋๋ WinAPI)๋ ๋ง์ดํฌ๋ก์ํํธ ์๋์ฐ ์ด์ ์ฒด์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ ์ ์๋ ํจ์์ ๋๊ตฌ๋ค์ ์งํฉ์ด๋ค. Windows API๋ ์๋์ฐ ์ด์ ์ฒด์ ์์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ๋๊ตฌ๋ค์ ์ ๊ณตํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฐฝ ๊ด๋ฆฌ, ํ์ผ ์ ์ถ๋ ฅ, ๊ทธ๋ํฝ ์ฒ๋ฆฌ ๋ฑ ๋ค์ํ ์์ ์ ์ฝ๊ฒ ํ ์ ์์ด์. ๋ง์น ์๋์ฐ ์ด์ ์ฒด์ ์ ํ๋ก๊ทธ๋จ์ด ์๋ก ๋ํํ ์ ์๊ฒ ํด์ฃผ๋ ์ธ์ด์ ๊ฐ์ ์ญํ ์ ํ๋ค.
RestFul API๋?
- Rest๋ "Representational State Transfer" ์ ์ฝ์๋ก, ์ธํฐ๋ท์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ API์ด๋ค.
- ์๋ฒ๋ ์๋น์ค์ ์กด์ฌํ๋ ๋ชจ๋ ์์(์ด๋ฏธ์ง,๋์์,DB์์)์ ๊ณ ์ ํ URL(URI)์ ๋ถ์ฌํด ํ์ฉํ๋ ๊ฒ์ด๋ค.
- ์์์ ์ ์ํ๊ณ ์์์ ๋ํ ์ฃผ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ๋ก ์ ์๋ฏธํ๋ค.
- ์ฝ๊ฒ ๋งํ๋ฉด, ์น์ ํตํด ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ์ด๋ค.
REST์ ๊ตฌ์ฑ
- ์์(Resource): ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด. ex) "์ฌ์ฉ์(User)"๋ผ๋ ์์, URL์ด๋ผ๋ ์์
- ํ์(Method) ๋๋ HTTP Method : ์์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํฉ๋๋ค.
- GET: ์์์ ์กฐํ
- POST: ์๋ก์ด ์์์ ์์ฑ
- PUT: ๊ธฐ์กด ์์์ ์ ๋ฐ์ดํธ
- DELETE: ์์์ ์ญ์
- ํํ(Message): JSON, XML ๋ฑ์ ํํ๋ฅผ ์ด์ฉํด ํํ
URL(URI) ๊ตฌ์ฑ ๋ช ์นญ
Message Format
** ๋ฌด์กฐ๊ฑด ์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ(Request)์ ๋จผ์ , ๊ทธ ๋ค์์ผ๋ก Response๊ฐ ํด๋ผ์ด์ธํธ์ ๋์์ค๋ ๊ฒ์ด๋ค.
Response๋ก ๋ฐ์์ฌ ๋ HTTP Status Codes
- 200 OK: ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋์์ต๋๋ค.
- 201 Created: ์์ฒญ์ด ์ฑ๊ณต์ ์ด์์ผ๋ฉฐ, ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋์์ต๋๋ค.
- 204 No Content: ์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํ์ง๋ง ์ฝํ ์ธ ๋ฅผ ๋ฐํํ์ง ์์ต๋๋ค.
- 400 Bad Request: ์๋ฒ๊ฐ ์์ฒญ์ ๊ตฌ๋ฌธ์ ์ธ์ํ์ง ๋ชปํ์ต๋๋ค.
- 401 Unauthorized: ์์ฒญ์ด ์ธ์ฆ๋์ง ์์์ต๋๋ค.
- 403 Forbidden: ์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ์ง๋ง ๊ฑฐ๋ถํ์ต๋๋ค.
- 404 Not Found: ์๋ฒ๊ฐ ์์ฒญํ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
Message ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ JSON ๋ฌธ๋ฒ