REST๋?
REST๋ Representational State Transfer์ ์ฝ์๋ก ์ง์ญํ๋ฉด "๋ํ๋ก ์ํ๋ฅผ ์ ์กํ๋ ๊ฒ"์ด๋ค.
์ ๋๋ก ๋ ์๋ฏธ๋ "๋ฐ์ดํฐ์ ์ด๋ฆ์ผ๋ก ์ํ๋ฅผ ๊ตฌ๋ถํ์ฌ ์ ์กํ๋ ๋ฐฉ์" ์ด๋ค.
์๋ฅผ ๋ค์ด ์ฝ๊ฒ ์ค๋ช
ํ๋ฉด ์๋์ ๊ฐ๋ค.
๋ฐ์ดํฐ์ ์ด๋ฆ
"์ด๊ฑฐ ์ ์ ์ ๋ํ ๋ฐ์ดํฐ์ผ" -> user (user๋ผ๊ณ ์ด๋ฆ์ ์ง์ด ์ ์ ๋ฐ์ดํฐ๋ผ๊ณ ์๋ ค์ค)
์ํ
"๋ ๋ฐ์ดํฐ ์์ฑํ ๊ฑฐ์ผ" -> Create (๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ค๊ณ ์๋ ค์ค)
์ ์ก
"์ ์ ๋ฐ์ดํฐ ์์ฑํด์ค" -> Create user (์ ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํด ๋ฌ๋ผ๊ณ ์์ฒญํจ)
์ด์ ๊ฐ์ด ๋ฐ์ดํฐ์ ์ด๋ฆ์ผ๋ก ์ํ๋ฅผ ๊ตฌ๋ถํ์ฌ ์ ์กํ๋ ๋ฐฉ์์ด๋ค.
์ฌ์ฉํ๋ ์ด์
๊ทธ๋ ๋ค๋ฉด REST API๋ฅผ ์ฌ์ฉํ๋ ๋ฌด์์ผ๊น?
๊ฐ์ฅ ๋ํ์ ์ธ ์ด์ ๋ "HTTP ํํ ํ ์ฝ" ์ด๋ผ๊ณ ์๊ฐํ๋ค.
REST API๋ HTTP ํ๋กํ ์ฝ ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ HTTP๋ฅผ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์ฆ, ์น์ ์ฅ์ ์ ์ต๋ํ ์ด๋ฆด ์ ์๋ ์ํคํ
์ณ ์คํ์ผ์ด๋ค.
๋ํ HTTP์ ํน์ง๊ณผ ๊ฐ์ด ์์ฒญ์ ๋ํ ๊ฒ์ ๋ช
ํํ๊ฒ ๋ฐํ๊ธฐ ๋๋ฌธ์ ์๋๋ฅผ ํ์
ํ๊ธฐ ์ฝ๊ณ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ช
ํํ ๋๋ ์ ์๋ค.
์์น
REST API๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ๋ช ๊ฐ์ง ์์น์ ๋ฐ๋ผ์ผ ํ๋ค.
1. Uniform Interface
๋ฐ์ดํฐ๋ฅผ ์๋ณ ๊ฐ๋ฅํ๊ฒ ํด์ผํ๋ค๋ ์์น์ด๋ค.
๊ตฌ์ฒด์ ์ผ๋ก URL๋ง ๋ณด๊ณ ๋ ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ์ํ๋ก ์ ์กํด์ผ ํ๋์ง ๊ตฌ๋ณํ ์ ์์ด์ผ ํ๋ค.
์๋ฅผ ๋ค๋ฉด www.github.com/fomagran/repositories <= ๊นํ fomagran์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์ ์ ์๋ค.
2. Client Server
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ฐ๋์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ฉฐ, ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์์ฒญํ๊ณ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์๋ตํด์ผ ํ๋ค.
3. Stateless
HTTP ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ HTTP ํน์ง๊ณผ ๊ฐ์ด ์ํ๋ฅผ ์ ์ฅํ์ง ์์ผ๋ฉฐ, ์์ฒญ์ ๋ชจ๋ ์ ๋ณด๊ฐ ๋ด๊ฒจ ํ ๋ฒ์ ์ ์กํด์ผ ํ๋ค.
4. Cacheable
์์ฒญ์ ํตํด ๋ณด๋ด๋ ์๋ฃ๋ค์ ์ ์ฅ๋์ด์ผ ํ๋ค.
์ด๋ฅผ ํตํด์ ์ ์ฅ๋ ์๋ฃ๋ค์ ์ฃผ๊ณ ๋ฐ์ ๋ ์๋๋ฅผ ํฅ์์ํฌ ์ ์๋ค.
5. Layered System
์์ฒญ๋ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋๋ฐ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๋ถ๋ฆฌ๋์ด ์์ด์ผ ํ๋ค.
์ค๊ฐ ์๋ฒ ๋ฑ์ ๋ฌ ์๋ฒ ํ์ฅ์ฑ์ ๋ณด์ฅํ๋ค.
6. Code on Demand
๋ณดํต ์๋ฒ๋ XML์ด๋ JSON์ผ๋ก ์๋ตํ์ง๋ง, ํ์ํ ๊ฒฝ์ฐ ์ฝ๋ ์์ฒด๋ฅผ ๋ฐ์ดํฐ๋ก ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ ์ ์๋ค.
URL ๋ค์ด๋ฐ ๊ท์น
RESTfulํ๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ค๋ฉด ๋ฐ๋ผ์ผ ํ๋ ๋ช ๊ฐ์ง ๊ท์น์ด ์๋ค.
*RESTful - REST์ ๊ท์น์ ์ง์ผ ์ ๊ณตํ๋ ์น ์๋น์ค ๋ฐฉ์์ ์๋ฏธํ๋ค.
1. ๋ช ์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
๋์ ์
www.fomagran.com/get-users
์ข์ ์
www.fomagran.com/users
2. ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค.
๋์ ์
www.fomagran.com/Users
์ข์ ์
www.fomagran.com/users
3. ๋ณต์ํ์ ์ฌ์ฉํ๋ค.
๋์ ์
www.fomagran.com/user
์ข์ ์
www.fomagran.com/users
4. ๊ตฌ๋ถ์๋ "-"(ํ์ดํ)์ ์ฌ์ฉํ๋ค. (์นด๋ฉ ์ผ์ด์ค๋ ํ์ฉ๋์ง ์์)
๋์ ์
www.fomagran.com/very_good_users
www.fomagran.com/veryGoodUsers
์ข์ ์
www.fomagran.com/very-good-users
5. url์ ๋ง์ง๋ง์ ์ฌ๋์ฌ๋ฅผ ํฌํจํ์ง ์์
๋์ ์
www.fomagran.com/very-good-users/
์ข์ ์
www.fomagran.com/very-good-users
6. ํ์ผ ํ์ฅ์๋ ํฌํจํ์ง ์์
๋์ ์
www.fomagran.com/photos/image.jpg
์ข์ ์
www.fomagran.com/photos/image
๋๊ธ