1. REST API
1. REST API๋?
์น์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ์์์ HTTP URI๋ก ํํํ๊ณ , HTTP ํ๋กํ ์ฝ์ ํตํด ์์ฒญ๊ณผ ์๋ต์ ์ ์ํ๋ ๋ฐฉ์
2. REST API ๋์์ธ ๋ฐฉ๋ฒ: ๋ฆฌ์ฐจ๋์จ์ REST ์ฑ์๋ ๋ชจ๋ธ
0๋จ๊ณ: HTTP ์ฌ์ฉ
1๋จ๊ณ: ๊ฐ๋ณ ๋ฆฌ์์ค์์ ํต์ ์ค์
2๋จ๊ณ: HTTP ๋ฉ์๋ ์์น ์ค์ (๊น์ง๋ง ์ง์ผ๋ ์ข์ API ๋์์ธ์ด๋ผ ํ ์ ์์)
3๋จ๊ณ: HATEOAS ์์น ์ค์
3. REST API ์ฑ์๋ ๋ชจ๋ธ - 0๋จ๊ณ

๋จ์ํ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ๋ง ํด๋ ๋์ง๋ง, ์ด ๊ฒฝ์ฐ ํด๋น API๋ฅผ REST API๋ผ๊ณ ๋ ํ ์ ์์
REST API๋ฅผ ์์ฑํ๊ธฐ ์ํ ๊ธฐ๋ณธ ๋จ๊ณ์ผ๋ฟ
4. REST API ์ฑ์๋ ๋ชจ๋ธ - 1๋จ๊ณ


๊ฐ๋ณ ๋ฆฌ์์ค์์ ํต์ ์ค์ ์ฆ, ๋ชจ๋ ์์์ ๊ฐ๋ณ ๋ฆฌ์์ค์ ๋ง๋ Endpoint๋ฅผ ์ฌ์ฉํด์ผ ํจ
์์ฒญํ๊ณ ๋ฐ๋ ์์์ ๋ํ ์ ๋ณด๋ฅผ ์๋ต์ผ๋ก ์ ๋ฌํด์ผ ํจ
์๋ํฌ์ธํธ ์์ฑ์์๋ ๋์ฌ, HTTP ๋ฉ์๋, ํน์ ์ด๋ค ํ์์ ๋ํ ๋จ์ด ์ฌ์ฉ์ ์ง์ํ๊ณ ๋ฆฌ์์ค์ ์ง์คํด ๋ช ์ฌ ํํ์ ๋จ์ด๋ก ์์ฑํ ๊ฒ (ex. appointment)
๋ฆฌ์์ค ์ ๋ฌ ์, ๋ฆฌ์์ค ์ฌ์ฉ์ ๋ํ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ ๋ฐํํด์ผ ํจ (ex. appointmentFailure)
5. REST API ์ฑ์๋ ๋ชจ๋ธ - 2๋จ๊ณ

CRUD์ ๋ง๊ฒ ์ ์ ํ HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ค์ ์ ๋
์๋ฅผ ๋ค์ด ์กฐํ(READ)๋ฅผ ์ํด์๋ GET๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด๋ GET ๋ฉ์๋๋ body๋ฅผ ๊ฐ์ง์ง ์๊ธฐ์ query parameter๋ฅผ ์ฌ์ฉํด ํ์ํ ๋ฆฌ์์ค ์ ๋ฌ
ํน์ ์์ฑ(CREATE)์ ์ํด์๋ POST๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์๋ต์ ์๋กญ๊ฒ ์์ฑ๋ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ด์ฃผ๊ธฐ์ ์๋ต์ฝ๋๋
201 Created
๋ก ๋ช ํํ ์์ฑํ์ฌ ๊ด๋ จ ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ Location ํค๋์ ์์ฑ๋ URI๋ฅผ ํตํด ํ์ธํ๊ฒ๋ ํ๋ฉด ๋จ
6. HTTP ๋ฉ์๋ ์ฌ์ฉ์ ๊ท์น
GET
: ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณํ์ํค์ง ์๋ ์์ฒญ์ ์ฌ์ฉPOST
: ์์ฒญ๋ง๋ค ์๋ก์ด ๋ฆฌ์์ค ์์ฑํ๊ณ ,PUT
๋ฉ์๋๋ ์์ฒญ๋ง๋ค ๊ฐ์ ๋ฆฌ์์ค ๋ฐํํ๋ฉฐ ์ด๋ฅผ *๋ฉฑ๋ฑ(idmpotent) ํ๋ค๊ณ ํจ.*๋์ผํ ์์ฒญ์ ํ ๋ฒ ๋ณด๋ด๋ ๊ฒ๊ณผ ์ฌ๋ฌ ๋ฒ ์ฐ์์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ด ๊ฐ์ ํจ๊ณผ๋ฅผ ์ง๋๊ณ , ์๋ฒ์ ์ํ๋ ๋์ผํ๊ฒ ๋จ์ ๋, ํด๋น HTTP ๋ฉ์๋๊ฐ ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ก๋ค๊ณ ๋งํจ. (์ถ์ฒ: mdn)PUT
: ๊ต์ฒด๊ณผPATCH
: ์์ ๋ฉ์๋๋ ๊ตฌ๋ถ ํ์.
7. REST API ์ฑ์๋ ๋ชจ๋ธ - 3๋จ๊ณ

HATEOAS(Hypermedia As The Engine Of Application State)๋ ํ์ดํผ๋ฏธ๋์ด ์ปจํธ๋กค์ ์ ์ฉํจ.
์๋ต์ ๋ฆฌ์์ค์ URI๋ฅผ ํฌํจํ ๋งํฌ์์๋ฅผ ์ฝ์ ํ์ฌ ์์ฑํด์ผ ํ๋ฉฐ, ๋งํฌ ์์๋ ์๋ต์ ๋ฐ์ ๋ค ํ ์ ์๋ ๋ค์ํ ์ก์ ๋ค์ ์ํด ๋ง์ ํ์ดํผ๋ฏธ๋์ด ์ปจํธ๋กค์ ํฌํจ
์ฆ, ์๋ต ๋ด์ ์๋ก์ด ๋งํฌ๋ฅผ ๋ฃ์ด ์๋ก์ด ๊ธฐ๋ฅ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ํฌ์ธํธ.
8. Open API์ API Key
Open API
๊ณต๊ณต๋ฐ์ดํฐ๋ ์ด์ฉ ๊ฐ๋ฅํ๋, ์ ํด์ง ์์น์ ๋ฐ๋ผ ์ฌ์ฉ
API Key
์๋ฒ์ ๋ฌธ์ ์ฌ๋ ์ด์ ์ด๋ฉฐ, ๋ก๊ทธ์ธํ ์ด์ฉ์์๊ฒ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ API Key ํํ๋ก ์ ๊ณต, ๋ฐ์ดํฐ ์์ฒญ ์ API Key๋ฅผ ๊ฐ์ด ์ ๋ฌํด์ผ ์ํ๋ ์๋ต์ ๋ฐ์ ์ ์์
9. Message State ์์ฒญ
root-endpoing(ํน์ root-URL)
API๋ก ์์ฒญ์ ์๋ฒ์ ํต์ ํ ๋, ์๋ฒ๊ฐ ์์ฒญ์ ์๋ฝํ๋ ์์์
์ผ๋ฐ์ ์ผ๋ก root-endpoint๋ ๋๋ฉ์ธ์ฃผ์์ ๋ฃจํธ(/)๋ฅผ ๊ฐ๋ฆฌํด
๋ง์ฐฌ๊ฐ์ง๋ก Message State Server์ URL์ ๊ธฐ์ค์ผ๋ก ํ์ ํ ์ ์๋ root-endpoint๋ Message States Server์ ๊ฐ์ฅ ๋ง์ง๋ง Location์ธ ํธ์คํธ์ ๋ฃจํธ(/)์ (ex. Github API์ root-endpoint๋ https://api.github.com)
path
path ํน์ url-path๋ API๋ฅผ ํตํด ์๋ฒ์ ํต์ ํ ๋, ์๋ฒ์ ํต์ ํ ์ ์๋ key ์ญํ
์๋ฒ์ ์ ์๋ ๋ฌธ์์ด์ ๋ฐ๋ผ path๊ฐ ๋ฌ๋ผ์ง (ex. https://api.github.com/user ์์๋ 'user'๊ฐ path)
Last updated