๋งํ๋ฉด์ ๋ฐฐ์์ ์คํฐ๋์์ ๊ณต๋ถํ๋ ๋ด์ฉ์ผ๋ก ์ง๋ฌธ๊ณผ ๋๋ต ์์ฃผ์ ๊ธ์
๋๋ค. ๋ํ ๋ด์ฉ์ ์ค๋ฅ๋ ์คํ๊ฐ ์์ ์ ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
1. REST(REpresentationsal State Transfer)๋ ๋ฌด์์ธ๊ฐ์?
์ ๋ฐ์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์
์์ ์ํธ์์ฉํ๋๋ฐ ์ฌ์ฉ๋๋ ์น ์ํคํ
์ฒ ๋ชจ๋ธ์
๋๋ค. ์ฆ, ์์์ ์ฃผ๊ณ ๋ฐ๋ ์น ์์์์ ํต์ ์ฒด๊ณ์ ์์ด์ ๋ฒ์ฉ์ ์ธ ์คํ์ผ์ ๊ท์ ํ ์ํคํ
์ฒ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
2. REST์ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ฌด์์ธ๊ฐ์?
์ฅ์
- ํด๋ผ์ด์ธํธ / ์๋ฒ ๊ตฌ์กฐ : ๊ฐ๊ฐ์ ์ญํ ์ด ํ์คํ๊ฒ ๊ตฌ๋ถ๋๊ณ ์ผ๊ด์ ์ธ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌ๋์ด ์๋ํ๊ธฐ ๋๋ฌธ์ ์๋ก ๊ฐ ์์กด์ฑ์ด ์ค์ด๋ ๋ค.
- ๋ฌด์ํ์ฑ : ์๋ฒ์์ ์ด๋ค ์์
์ ํ๊ธฐ ์ํด ์ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ํ์๊ฐ ์๊ณ ๋ค์ด์จ ์์ฒญ์ ๋ํด ์ฒ๋ฆฌ๋ง ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ด ์ฝ๊ณ ๋จ์ํด์ง๋ค.
- ์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ : ์บ์ ์ฌ์ฉ์ ํตํด ์๋ต์๊ฐ์ด ๋นจ๋ผ์ง๋ค.
- ์์ฒด ํํ์ฑ : JSON์ ์ด์ฉํ ๋ฉ์์ง ํฌ๋ฉง์ ์ด์ฉํ์ฌ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๊ณ REST API ๋ฉ์์ง ๋ง์ผ๋ก๋ ์ด๋ค ํ์๋ฅผ ํ๋์ง ์ ์ ์๋ค.
- ๊ณ์ธตํ ๊ตฌ์กฐ : ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ํ๋ก์ ์๋ฒ, ์ํธํ ๊ฒ์ธต ๋ฑ ์ค๊ฐ ๋งค์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋จ์
- point-to-point ํต์ ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ๋งบ๊ณ ์ํธ์์ฉํด์ผํ๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐ์๋ ์ ๋นํ์ง ์๋ค.
- HTTP๋ URI, HTTP์ ๋ํ ๋ด์ฉ๋ง์ ๋ด๊ณ ์์ด์ ๋ณด์๊ณผ ํต์ ๊ท์ฝ ์ ์ฑ
๊ฐ์ ๊ฒ์ ์ ํ ๋ค๋ฃจ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์์์ ์ค๊ณํ๊ณ ๊ตฌํํด์ผ ํ๋ค.
3. ์ RESTful๋ผ๊ณ ๋งํ๋์?
- ๋ฉํฐ ํ๋ซํผ์ ๋ํ ์ง์์ ์ ์ฉํ๊ณ HTTP ํ๋กํ ์ฝ์ ์ค์ํ๋ฏ๋ก ํ๋กํ ์ฝ์ ์ง์ํ๋ ์ด๋ ์ธ์ด๋ฉด ๋ชจ๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์
๋๋ค.
4. REST API์ ์ผ๋ฐ์ ์ธ ์ค๊ณ ๊ท์น์ ๋ํด์ ๋งํด์ฃผ์ธ์.
5. graphQL์ ์ด์ฉํ API ๋ฐฉ์๊ณผ ๋น๊ตํ์ฌ REST API๋ฅผ ์ค๋ช
ํด์ฃผ์ธ์.
- GraphQL API๋ ์ฃผ๋ก ์ ์ฒด API๋ฅผ ์ํด์ ํ๋์ endpoint๋ฅผ ์ฌ์ฉํ์ง๋ง RestAPI๋ ๋ฆฌ์์ค๋ง๋ค ํ๋์ endpoint๋ฅผ ๊ฐ์ง๊ณ ๊ทธ endpoint์์ ๊ทธ ๋ฆฌ์์ค์ ๋ํ ๋ชจ๋ ๊ฒ์ ๋ด๋นํฉ๋๋ค.
- GraphQL์ ์์ฒญํ ๋ ์ฌ์ฉํ Query๋ฌธ์ ๋ฐ๋ผ ์๋ต์ ๊ตฌ์กฐ๊ฐ ๋ฌ๋ผ์ง๋๋ค.
- GraphQL์ ์ํ๋ ์ ๋ณด๋๋ก ์์ฒญํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง๋ง REST API๋ ์๋ต์ ํํ๊ฐ ์ ํด์ ธ์๊ณ , ํ์ํ ๋ถ๋ถ๋ง ์์ฒญํ๋ ๊ฒ์ด ํ๋ญ๋๋ค.
Ref
Restful์ด๋
REST API URI ๊ท์น
REST API vs GraphQL ์ฐจ์ด์ ์์๋ณด๊ธฐ