1 ๋ถ„ ์†Œ์š”

Django Rest Framework (DRF)

DRF ๋Š” Django๋ฅผ ์‚ฌ์šฉํ•ด RESTful API๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž„!
๊ธฐ์กด์˜ Django๋Š” ํ’€์Šคํƒ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ๋ชฉ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋ฉด, DRF๋Š” ๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ฃผ์š” ๋ชฉ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ํ•œ๋‹ค!

RESTful API?

RESTful API ๋ž€,HTTP Method๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์›น ํ†ต์‹  ์ธํ„ฐํŽ˜์ด์Šค์ž„.

RESTful ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ์›์น™์ด ์žˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋จ
  2. ๋ฌด์ƒํƒœ
    • ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์€ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ดํ•ดํ•˜๊ณ  ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ด์•ผ ํ•จ
    • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋ณด๊ด€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  3. ์บ์‹œ ๊ฐ€๋Šฅ
    • ์„œ๋ฒ„ ์‘๋‹ต์€ ๋ช…์‹œ์ ์œผ๋กœ ์บ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•จ์„ ํ‘œ์‹œํ•ด์•ผ ํ•จ
  4. ๊ณ„์ธตํ™” ์‹œ์Šคํ…œ
    • ํด๋ผ์ด์–ธํŠธ๋Š” ๋ณดํ†ต ์ตœ์ข… ์„œ๋ฒ„์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š”์ง€, ์ค‘๊ฐ„ ๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Œ
    • ๊ณ„์ธตํ™”๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
  5. ์ฝ”๋“œ ์˜จ ๋””๋งจ๋“œ
    • ์„œ๋ฒ„๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „์†กํ•  ์ˆ˜ ์žˆ์Œ
    • ์ด๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ๊ธฐ๋Šฅ์„ ์ผ์‹œ์ ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ
  6. ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค
    • ํ†ต์‹ ์˜ ๋‹จ์ˆœ์„ฑ์„ ์œ„ํ•ด API๋Š” ์ž์› ์ง€ํ–ฅ์ ์ด์–ด์•ผ ํ•จ โ†’ ์ž์›๊ณผ ๊ทธ์— ๋Œ€ํ•œ ํ–‰๋™์„ ๋ช…ํ™•ํ•˜๊ฒŒ

๋Œ€ํ‘œ์ ์ธ HTTP Method

GET

  • ์ž์›์„ ์กฐํšŒํ•จ

POST

  • ์ž์›์„ ์ƒ์„ฑํ•จ

PUT

  • ์ž์›์„ ์ˆ˜์ • ๋ฐ ๊ฐฑ์‹ ํ•จ

DELETE

  • ์ž์›์„ ์‚ญ์ œํ•จ

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

1. DRF ์„ค์น˜

pip install djangorestframework

2. settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',  # ์ถ”๊ฐ€๋œ ๋ถ€๋ถ„
]

DRF๋Š” Serializer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค!

REST API๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Serializer ๊ฐ€ ํ•„์š”ํ•จ.

Serializer๋Š” ์ง๋ ฌํ™” ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ, request๋กœ ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ JSON ํ˜•ํƒœ๋กœ ์ง๋ ฌํ™” ํ•˜๊ฑฐ๋‚˜, JSON ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์›๋ณธ ๋ฐ์ดํ„ฐ๋กœ ์—ญ์ง๋ ฌํ™” ํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

Django์™€ DRF๋ฅผ ํ†ตํ•œ ๊ฐœ๋ฐœ์˜ ์ฐจ์ด์ 

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ