**REST (Representational State Transfer)**๋ ์น์์ ์์์ ํจ์จ์ ์ผ๋ก ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์ํคํ
์ฒ ์คํ์ผ์ด๋ค.
์ด๋ฅผ ๋ฐ๋ฅด๋ ์ค๊ณ ๋ฐฉ์์ RESTful์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
RESTful์ ํต์ฌ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค:
์์(Resource)์ ๋ช ํํ ์๋ณ
์น์์ ๋ชจ๋ ์์์ ๊ณ ์ ํ URI๋ก ํํ๋๋ค.
์: /students/1
โ id๊ฐ 1์ธ ํ์ ์์
ํ์ค HTTP ๋ฉ์๋ ํ์ฉ
GET
: ์์ ์กฐํ
POST
: ์์ ์์ฑ
PUT
: ์์ ์ ์ฒด ์์
PATCH
: ์์ ๋ถ๋ถ ์์
DELETE
: ์์ ์ญ์
๋ฌด์ํ์ฑ(Stateless)
์๋ฒ๋ ์์ฒญ ๊ฐ ์ํ๋ฅผ ์ ์ฅํ์ง ์๋๋ค.
๊ฐ ์์ฒญ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ ํ์ํ ์ ๋ณด๋ฅผ ๋ชจ๋ ํฌํจํ๋ค.
ํ์คํ๋ ์๋ต ํฌ๋งท
์ฃผ๋ก JSON, ๋๋ก๋ XML์ ์ฌ์ฉํ๋ค.
์ผ๊ด๋ ์๋ต ๊ตฌ์กฐ๋ ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์ ํธ์์ฑ์ ๋์ธ๋ค.
RESTful์ ๋จ์ํ API ์์ฑ ๊ท์น์ด ์๋๋ผ, "์น ์์์ ์ผ๊ด๋๊ฒ ํํํ๊ณ ๋ค๋ฃจ๋ ์ฒ ํ" ์ด๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํต **3๊ณ์ธต ๊ตฌ์กฐ(Layered Architecture)**๋ฅผ ๋ฐ๋ฅธ๋ค.
์ด ๊ตฌ์กฐ๋ ์ฑ
์์ ๋ถ๋ฆฌํ์ฌ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ๋์ธ๋ค.
Controller (ํ๋ ์ ํ ์ด์ ๋ ์ด์ด)
์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๊ณ , ์ ์ ํ ์๋ต์ ๋๋ ค์ฃผ๋ ์ญํ
RESTful API ์๋ํฌ์ธํธ๋ฅผ ์ ์ํ๋ ๊ณณ
์: GET /students
์์ฒญ์ ๋ฐ์ ์๋น์ค์ ์ ๋ฌ
Service (๋น์ฆ๋์ค ๋ก์ง ๋ ์ด์ด)
์ค์ ๋์(๋ก์ง)์ ์ฒ๋ฆฌํ๋ ๊ณ์ธต
๋ฐ์ดํฐ ๊ฒ์ฆ, ๊ท์น ์ ์ฉ, ์๊ณ ๋ฆฌ์ฆ ์ํ ๋ฑ์ ๋ด๋น
์: ํ์ ์ฑ์ ํ๊ท ์ ๊ณ์ฐํ๋ ๊ธฐ๋ฅ
Repository (๋ฐ์ดํฐ ์ ๊ทผ ๋ ์ด์ด)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ํตํ๋ ๊ณ์ธต
SQL ์คํ, ๋ฐ์ดํฐ ์ ์ฅ/์กฐํ/์ญ์ ๋ด๋น
์: ํ์ ์ ๋ณด๋ฅผ MySQL์์ ๊ฐ์ ธ์ค๊ธฐ
ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค:
์ฌ์ฉ์ ์์ฒญ โ Controller โ Service โ Repository โ DB
โ (๊ฒฐ๊ณผ ๋ฐํ)
์ด ๊ตฌ์กฐ ๋๋ถ์:
Controller๋ ๋จ์ํ ์ ์ถ๋ ฅ๋ง ๋ด๋น
Service๋ ๋น์ฆ๋์ค ๊ท์น๋ง ์ง์ค
Repository๋ ๋ฐ์ดํฐ ์ ๊ทผ๋ง ์ ๋ด
์ฑ ์์ด ๋ช ํํ ๋๋์ด ์์ผ๋ฏ๋ก, ์ฝ๋๊ฐ ๊น๋ํด์ง๊ณ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
์ ๋ฆฌ:
RESTful์ ์์์ URI์ HTTP ๋ฉ์๋๋ก ํํํ๋ ์น ์ํคํ ์ฒ ์ฒ ํ.
๋ ์ด์ด๋ ์ํคํ ์ฒ๋ ControllerโServiceโRepository๋ก ์ฑ ์์ ๋ถ๋ฆฌํ ๊ตฌ์กฐ.
๋์ ๊ฒฐํฉํ๋ฉด, RESTful API ์ค๊ณ๊ฐ ๋ช ํํด์ง๊ณ , ์์คํ ์ด ๊ฒฌ๊ณ ํด์ง๋ค.