๊ฐ. Test
1) Model ์์ฑ
โข
Post ๋ชจ๋ธ ์์ฑ
โข
2) Test ์์ฑ
โข
Post Model ๋์ Unit ํ
์คํธ ์์ฑ
โข
๋. Build Up DRF
1) DRF ์ค์น
โข
๊ฐ์ํ๊ฒฝ ๋ด DRF ์ค์น ๋ช
๋ น
โข
pip install djangorestframework~=3.11.0
2) urls.py
โข
๊ธฐ๋ฅ: HTTP ์์ฒญ ๊ฒฝ๋ก ์ค์
โข
3) serializers.py
โข
๊ธฐ๋ฅ: Model์ ๋ฐ์ดํฐ๋ฅผ JSON ํํ๋ก ์ง๋ ฌํ
โข
4) views.py
โข
๊ธฐ๋ฅ: ๊ฐ๊ฐ์ API end-point์ ๋ํด ๋น์ง๋์ค ๋ก์ง ์ ์ฉ
โข
๋ค. Permissions
1) View Level
โข
๊ธฐ๋ฅ: API ๊ฐ๊ฐ์ ๋ํ permission ์ค์
โข
2) Project Level
โข
๊ธฐ๋ฅ: ๋ชจ๋ API์ ๋ํ default permission ์ค์
โข
3) Custom
โข
๊ธฐ๋ฅ: ํน์ API์ business logic์ ๋ฐ๋ผ permission ์ค์
โข
์์ ์ฝ๋์ ๊ฒฝ์ฐ Post ์์ฑ์์ ์๋น์ค ๋ก๊ทธ์ธ ์ ์ ๊ฐ ๋์ผํ ๊ฒฝ์ฐ์๋ง Post ์์์ ๋ํด ๊ฐฑ์ ๊ฐ๋ฅ
โ ๋จ, Post ์์ฑ์์ ์๋น์ค ๋ก๊ทธ์ธ ์ ์ ๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ Post ์์์ ๋ํ ์กฐํ ๊ฐ๋ฅ
๋ผ. User Authentication
1) Token ์ ์ฉ
2) DRF built-in ํ ํฐ ์ค์ ํน์ง
โข
ํ ํฐ ๋ง๋ฃ๊ธฐ๊ฐ ๋ฏธ์ค์
โ ๋ณด์ ์ ์ทจ์ฝํ๋ฏ๋ก ํ ํฐ ๋ง๋ฃ๊ธฐ๊ฐ์ ๋ํ ์ถ๊ฐ์์
ํ์
โข
์ฌ์ฉ ํ๊ฒฝ์ ๊ด๊ณ ์์ด ํ๋์ ์ฌ์ฉ์์๊ฒ ํ๋์ ํ ํฐ ๋ฐํ
โ web ํ๊ฒฝ์ ํ ํฐ ๋ด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ๋ฉด mobile ํ๊ฒฝ์ ํ ํฐ ๋ด ์ฌ์ฉ์ ์ ๋ณด์ ๋ฌ๋ผ์ง๋ฏ๋ก ํด๋น ์ ๋ณด์ ์ ์ง์ ๊ฐฑ์ ์ด์ ๋ฐ์
3) JWT ์ฌ์ฉ ๊ถ์ฅ
โข
DRF built-in ํ ํฐ ์ค์ ๋ณด์
โ ํ ํฐ ๋ง๋ฃ๊ธฐ๊ฐ ์ค์ ๊ฐ๋ฅ
โ ์ํธํํ์ฌ HTTP ์ ์ก ๊ฐ ๋ณด์์ฑ ํฅ์
โ ํ ํฐ์ ์ ์ผ์ฑ์ ๋ณด์ฅํ๋ ๋ฐํ ๋ฐฉ์
๋ง. Viewsets & Routers
1) Viewsets
โข
๋ณต์์ ์ฐ๊ด๋ view์ ๋ํด ํ๋์ ํด๋์ค๋ก ์ถ์ํ
โ CRUD ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ณต์์ view๋ฅผ ํ๋์ ํด๋์ค๋ก ๋ณํฉ
2) Routers
โข
Viewsets์ผ๋ก ์ ์๋ ํด๋์ค์ ๋ํด HTTP Request Convention์ ๋ฐ๋ผ Request URL ์๋ ๋งค์นญ
โข
(์์ธ๋ฏธ์) users์ router.register ์ฝ๋์ posts์ ๋์ผ ์ฝ๋์ ์์น์ ๋ฐ๋๋ฉด '~/users' GET ์์ฒญ์ ๋ํด 404 ์๋ฌ ๋ฐ์
3) Post ์ ์ฉ
โข
4) User ์ ์ฉ
โข
๋ฐ. Schemas & Documentation
1) Schemas package
โข
Schema: machine-readableํ Document๋ก ๋ชจ๋ API endpoint์ ๋ํ outline ์ ๊ณต
โข
์ฌ์ ์ค๋น: pyyaml, uritemplate package ์ค์น ํ์
โข
2) Documentation package
โข
Document: Schema๋ฅผ ๊ธฐ๋ฐ์ผ๋ก human-readableํ Document๋ก ๋ฐ๊พผ ๊ฒ
โข
๋ฐฐํฌ ์ ์ฃผ์์ฌํญ
โ static file์ cloud storage์ ์ฌ๋ ค๋๊ณ ์ ๊ทผํ ์ ์๋๋ก ์์
ํ์
โ Django์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด๋ฐฐํฌํ๊ฒฝ์ค์ ์ ์ ์๋ storage ๊ณ์ ์ผ๋ก static file์ ์
๋ก๋ ํ์
ex) python manage.py collectstatic --settings=backend.settings.prod
โข
์ฌ์ ์ค๋น
โ uritemplate, drf_yasg pakcage ์ค์น ํ์
โ INSTALLED_APPS ์ drf_yasg ์ถ๊ฐ ํ์
โข
Reference
โข
Blog API Cloning, DJANGO for APIs(William S. Vincent)
โข
์ฐธ๊ณ ์ฝ๋ ์ ์ฒด, https://github.com/MJbae/drf-practice/