DRF (Django Rest Framework)
RESTful์ด๋?
- RESTful์ด๋ Representational State Transfer์ ์ค์๋ง
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด ๋ฐ์ดํฐ ๊ตํ ์, HTTP ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ตํ
- REST : HTTP์ URL๊ณผ HTTP Method(GET, POST, PUT, DELETE)๋ฅผ ์ฌ์ฉํด์ API ๊ฐ๋
์ฑ์ ๋์ธ ๊ตฌ์กฐํ๋ ์์คํ
์ํคํ
์ณ(framework)
Tip! REST ๊ตฌ์ฑ
์์ (RESOURCE) - URI
ํ์ (Verb) - HTTP METHOD
ํํ (Representations)
- DRF(Django Rest Framework)๋ Django ์์์ RESTful API ์๋ฒ๋ฅผ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ฃผ๋ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
DRF
- Django REST Framework๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์ธ์ฆ ์ ์ฑ
์ OAuth1, OAuth2๋ฅผ ์ํ ํจํค์ง๊ฐ ์ถ๊ฐ๋์ด ์๋ ๊ฒฝ์ฐ
- ๋ฒ์ฉ์ฑ์ด ์ข์ ์น ๋ธ๋ผ์ฐ์ API๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฐ๋ฅ
- DB data๋ฅผ JSON์ผ๋ก ์ง๋ ฌํ(serialization)ํ๋ ๊ธฐ๋ฅ ์กด์ฌ
- ๊ตญ์ ์ ์ธ ๊ธฐ์
๋ค์ ํฌํจํด์ ๋ค์์ ๊ธฐ์
์ด ์ฌ์ฉํ๊ณ ์์ด ๋ฌธ์ํ & ์ปค๋ฎค๋ํฐ ํ์ฑ์ด ์ ๋์ด ์์
Serializer๋?
- DRF์ ๊ฐ์ฅ ๋งค๋ ฅ์ ์ธ ๊ธฐ๋ฅ
- Serializer : ํ์ด์ฌ ํ์์ ์ฝ๋๋ฅผ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ฒฝ๊ณผ์ ํต์ ์ ์ํด ์ง๋ ฌํ ํ ๋, DRF์์ ์ง๋ ฌํ๋ฅผ ๋ด๋นํ๋ ํด๋์ค
- Queryset, Model instance๋ฑ์ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ Python datatype์ผ๋ก ๋ณํ์์ผ JSON, XML ๋ฑ์ ์ปจํ
์ธ ํ์
์ผ๋ก์ ๋ณํ์ ์ฝ๊ฒ ๋ง๋ค์ด์ค
Tip! ์ง๋ ฌํ(serialization)๋?
์ง๋ ฌํ ๋๋ ์๋ฆฌ์ผ๋ผ์ด์ ์ด์
์ ์ปดํจํฐ ๊ณผํ์ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ๋ฌธ๋งฅ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ค๋ธ์ ํธ ์ํ๋ฅผ ๋์ผํ๊ฑฐ๋ ๋ค๋ฅธ ์ปดํจํฐ ํ๊ฒฝ์ ์ ์ฅํ๊ณ ๋์ค์ ์ฌ๊ตฌ์ฑํ ์ ์๋ ํฌ๋งท์ผ๋ก ๋ณํํ๋ ๊ณผ์
- ํ ์ปดํจํฐ์์ ๊ตฌ์กฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ธํฐ๋ท ๋๋จธ์ ์๋ ๋ค๋ฅธ ์ปดํจํฐ๋ก ๋ณด๋ธ๋ค๊ณ ๊ฐ์ ํ์ ๋, ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ ์ฐ์๋ ๋ฐ์ดํธ์ ํ๋ฆ
- ๋ฐ๋ผ์ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ผํ๋๋ฐ, ์ด๋ฅผ ์ง๋ ฌํ๋ผ๊ณ ํจ (์ง์ ์ผ๋ก ์ญ ๋์ดํ๋ค๋ ์๋ฏธ)
- ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ์ธก์์๋ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ค์ ๊ตฌ์กฐ์ฒด๋ก ๋ง๋ค์ด์ผํ๋๋ฐ, ์ด๋ฅผ ์ญ์ง๋ ฌํ๋ผ๊ณ ํจ
- JSON, XML, YAML๊ณผ ๊ฐ์ ๋ฌธ์ ํฌ๋งท์ด ์ฃผ๋ก ์ง๋ ฌํ์ ๋์์ด ๋จ
- ์ง๋ ฌํ ๋๋ ๋ฐฉ๋ฒ๊ณผ ๋น์ง๋ ฌํ ๋๋ ๋ฐฉ๋ฒ์ด ๋์ผํด์ผ ๋ค๋ฅธ ํ๊ฒฝ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์