DRF

GreenBeanยท2021๋…„ 8์›” 23์ผ
0
post-thumbnail

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๊ณผ ๊ฐ™์€ ๋ฌธ์„œ ํฌ๋งท์ด ์ฃผ๋กœ ์ง๋ ฌํ™”์˜ ๋Œ€์ƒ์ด ๋จ
  • ์ง๋ ฌํ™” ๋˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋น„์ง๋ ฌํ™” ๋˜๋Š” ๋ฐฉ๋ฒ•์ด ๋™์ผํ•ด์•ผ ๋‹ค๋ฅธ ํ™˜๊ฒฝ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
profile
๐ŸŒฑ Backend-Dev | hwaya2828@gmail.com

0๊ฐœ์˜ ๋Œ“๊ธ€