DRF๋ก ๋ง๋ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
4.2.1 helloAPI ๋ง๋ค์ด๋ณด๊ธฐ
์ด์ ์ฅ๊ณ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋์๋ ๋ชจ๋ธ๋ถํฐ ์์ฑํ๋๋ฐ, ์ด๋ฒ ์์ ์๋ ๋ชจ๋ธ์ด ์์ด ๋ฐ๋ก ๋ทฐ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
๋ทฐ
์์ ์ ๋ง๋ค์๋ ๋ทฐ์ ํจ์์ ๋น์ทํ๋ฏ ๋ค๋ฆ ๋๋ค.
์ ์ผ ๋ฏ์ ๊ฒ์
์ ๋๋ค.
์ด๋ ๊ฒ @ํ์์ ํจ๊ป ์์ฑ๋์ด ์๋ ์ฝ๋๋ฅผ ๋ฐ์ฝ๋ ์ดํฐ๋ผ๊ณ ํฉ๋๋ค.
๋ฐ์ฝ๋ ์ดํฐ๋ ํจ์๋ฅผ ๊พธ๋ฏธ๋ ์ญํ ์ ํฉ๋๋ค.
-> ํด๋น ํจ์์ ๋ํ ์ฑ๊ฒฉ(์คํ์ผ)์ ํ์ํด์ฃผ๋ ํ๊ธฐ๋ฒ
HelloAPI๋ผ๋ ํจ์๊ฐ GET์์ฒญ์ ๋ฐ์ ์ ์๋ API๋ผ๋ ๊ฒ์
@api_view๋ผ๋ ํ๊ธฐ๋ฒ์ผ๋ก ๋ํ๋ธ๋ค๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์์ฒญ์ด ์ด๋ค ํ์ ์ธ์ง ์์๋ด๊ธฐ ์ํด์๋ request.method, ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ ์ํด์๋ request.data๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋์๋ Response๋ผ๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด๋ DRF์ ๊ฒฐ๊ณผ ๋ฐํ ๋ฐฉ์์ ๋๋ค.
URL
๋ทฐ๋ฅผ ๋ง์ณค๋ค๋ฉด? URL์ ์ค์ ํ ์ฐจ๋ก!
myweb/urls.py๋ ์์ ๊ฐ์ด ์์ฑํ๊ณ ,
example์๋ urls.py๋ฅผ ๋ง๋ค์ด ์์ ๋ด์ฉ์ ์ ์ด์ค๋๋ค.
์ด์ ์์ ์ด ๋ชจ๋ ์๋ฃ๋์์ต๋๋ค!
runserver๋ฅผ ํตํด ์คํํ์ฌ ๋ค์ด๊ฐ๋๋ค.
์คํํด๋ณด๋,
page not found ์๋ฌ๊ฐ ๋์ค๋ฉด์ ์ฐ๋ฆฌ๊ฐ ๊ฐ ์ ์๋ ์ฃผ์๋ฅผ ์๋ ค์ฃผ๊ณ ์์ต๋๋ค.
example์ด๋ผ๋ ์ฃผ์๊ฐ ์๋ค์, 127.0.0.1:8000/example/๋ก ์ด๋ํด ๋ด ์๋ค.
์,, ๋ญ๊ฐ ๋๊ฐ์ ํ๋ฉด์ด ๊ณ์ ๋๋ ๊ฒ ๊ฐ์ฃ ?
example/hello/๋ก ๋ค์ด๊ฐ๋ผ๊ณ ๋ค์ ์๋ ค์ค๋๋ค.
๋ค์ ํ ๋ฒ ์๋ํด๋ด ์๋ค.
์ค, ๋ญ๊ฐ ์ฒ์ ๋ณด๋ ๋์์ธ์ ํ๋ฉด์ด ๋ํ๋ฌ์ต๋๋ค.
๋ฟ๋ง ์๋๋ผ ์ฐ๋ฆฌ๊ฐ ๋ทฐ์์ ๋ง๋ค์๋ Response ์์ ๋ฃ์ hello world!๋ ์๋ํ๋๊ณ ,
GET/example/hello/๋ผ๋ ์ง ๋ค๋ฅธ ๋ฐ์ดํฐ๋ค๋ ํจ๊ป ์ ๋ํ๋๊ณ ์์ต๋๋ค.
๋ฏธ์ฝํ์ง๋ง ์ฐ๋ฆฌ๋ ๋ฐฉ๊ธ ์ฒ์์ผ๋ก API๋ฅผ ๋ง๋ค์ด๋ดค์ต๋๋ค!
4.2.2 Django์์ ๋ฌ๋ผ์ง ์
๋ฐฉ๊ธ ๋ดค๋ ๊ทธ ๋ฉ์ง ๋ฐ์ดํฐ๋ค์ HTTP์ ํค๋๋ผ๊ณ ํฉ๋๋ค.
HTTP๋ ์น์ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ ์์ฒญ/์๋ต์ ์ํ ํ๋กํ ์ฝ์ด์์ต๋๋ค.
HTTP๊ฐ ์์ฒญ/์๋ต์ ํ ๋ ๋๊ตฌ๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํต์ ์ ํ๊ธฐ ๋๋ฌธ์ ํต์ผ๋ ๊ท๊ฒฉ์ด ํ์ํ๊ณ ,
๊ทธ ๊ท๊ฒฉ ๋ด์ ์๋ ์ฃผ์ ์ ๋ณด๋ฅผ ๋ด์ ๋๋ ๊ฒ์ด HTTP์ ํค๋์ ๋๋ค.
๋ค์ ๋ณธ๋ฌธ์ผ๋ก ๋์์ค๋ฉด, DRF๋ ์์์ ๋ง๋ ๊ฒ์ฒ๋ผ Response๋ฅผ ์ ๊ณตํ๋
API์ ํํ๋ก ๊ฒฐ๊ณผ๋ฌผ์ด ๋์ต๋๋ค.
๊ทธ๋ ๋ค๋ ๊ฑด ์์ ๋ง๋ค์ด์๋ ํ ํ๋ฆฟ์ ํํ๊ฐ ์๋,
JSON๊ณผ ๊ฐ์ ํํ์ ์๋ต์ ์ ๊ณตํ ํ ๋ฐ
๊ทธ๋ ๋ค๋ฉด ํ ํ๋ฆฟ์ ๋์ ํ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํ๊ฒ ์ฃ ?
๊ธฐ์กด ๋ทฐ์์ ํ ํ๋ฆฟ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํด ์ฃผ์๋ค๋ฉด ์ด์ ๋ค๋ฅธ ๊ณณ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํด์ผ ํฉ๋๋ค.
DRF์์๋ Serializer๊ฐ ๊ทธ ์ญํ ์ ์ํํฉ๋๋ค.
4.3 ๋์ ์ ๋ณด API ์์ ๋ก Django REST Framework ๊ธฐ์ด ๊ฐ๋ ์ดํด๋ณด๊ธฐ
๋์ ์ ๋ณด API ์์ ๋ฅผ ๋ง๋ค๋ฉฐ DRF์ ์ฃผ์ ๊ฐ๋ ์ ์ฒ์ฒํ ์ตํ๋ด ์๋ค.
4.3.1 DRF Serializer
์๋ฆฌ์ผ๋ผ์ด์ ๋ง ์๋ฉด Django์ DRF์ ์ฐจ์ด์ ์ ๋ชจ๋ ํ์ ํ ๊ฒ์ด๋ ๋ค๋ฆ์์ต๋๋ค.
Serialize์ ์ฌ์ ์ ์ธ ์๋ฏธ๋ ์ง๋ ฌํ ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ง๋ ฌํ ๋ Django ํ๋ก์ ํธ์์ ๋ด๊ฐ ๋ง๋ ๋ชจ๋ธ๋ก๋ถํฐ ๋ฝ์ queryset, ์ฆ ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ JSON ํ์ ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋๋ค.
๊ฐ๋จํ Django ๋ชจ๋ธ์ JSON์ผ๋ก ๋ณํํ๊ธฐ ์ํ ๋ชจ์ ํ ์ ๋๋ก ์ดํดํ๊ณ ๋์ด๊ฐ๋ ํฐ ๋ฌธ์ ๋ ์์ง๋ง,
์ค์ํ ๋ด์ฉ์ด๋ ์ข ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
DRF ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋์๋ Django์ ๋ชจ๋ธ์ ํตํด ์ ์ฅํฉ๋๋ค.
๋ชจ๋ธ์ ์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ถ์ํํ ๊ฐ๋ ์ด๋ฉฐ,
Django์ ORM์ ํตํด ํ์ด์ฌ ๋ฌธ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Django์์์ ๋ฐ์ดํฐ๋ JSON์ด๋ ์ด๋ฐ ํฌ๋งท์ด ์๋,
ํ์ด์ฌ ๊ฐ์ฒด์ ํํ๋ก ์ ์ฅ์ด ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ง๋ค API๋ ์ด๋ฐ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
์ด๋ ์ด๋ค ์์ ๋ ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋ณด๋ด์ค๋ค๋ฉด?
ํด๋ผ์ด์ธํธ๋ ์ฝ์ง๋ ๋ชปํ๋ ํ์ด์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฒ ๋ ๊ฒ ์ ๋๋ค.
๋น์ฐํ ์ด๋ฅผ ์ํด ํ์ด์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ ๋ฌธ์์ด(JSON๋ฑ)๋ก ๋ณํํ์ฌ ๋ณด๋ด์ฃผ์ด์ผ ํ๊ณ ,
์ด๋ ๊ฒ ํ์ด์ฌ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ ์์ ์ ์ง๋ ฌํ,
Serialize ๋ผ๊ณ ์ดํดํ๋ฉด ๋๊ฒ ์ต๋๋ค.
๋ฐ๋๋ก, ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ DRF ์๋ฒ์ ๋ณด๋ด์ฃผ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
POST ์์ฒญ์ ๋ณด๋ด๋ API๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ,
ํด๋ผ์ด์ธํธ๋ API ์์ฒญ์ ๋ฐ์ดํฐ๋ฅผ JSON ๋ฑ ๋ฌธ์์ด ํํ๋ก ์ ๋ ฅํ์ฌ ๋ณด๋ด์ค ๊ฒ์ ๋๋ค.
DRF์๋ฒ ์ ์ฅ์์๋ ์ด ๋ฌธ์์ด์ ๊ทธ๋๋ก ๋ชจ๋ธ์ ํตํด ์ ์ฅํ ์ ์์ต๋๋ค.
๋ชจ๋ธ์ ํตํด ์ ์ฅํ๋ ค๋ฉด ๋ฐ์ดํฐ๊ฐ ํ์ด์ฌ ๊ฐ์ฒด์ ํํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ ์์ ๊ฒฝ์ฐ์ ๋ฐ๋๋ก JSON ๋ฑ ๋ฌธ์์ด์ ํ์ด์ฌ ๊ฐ์ฒด๋ก ๋ณํํ๋ ์์ ์ด ํ์ํฉ๋๋ค.
์ด๊ฒ์ ์ญ์ง๋ ฌํ, ๋์๋ฆฌ์ผ๋ผ์ด์ฆใ ก๋ผ๊ณ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์ผ๋ก ๋ฐฐ์ฐ๋ฉฐ ๋ง๋ค ์๋ฆฌ์ผ๋ผ์ด์ ๋ ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ ๊ธฐ๋ฅ์ ๋์์ ๊ฐ๊ณ ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ API๊ฐ ๋ฐ์ดํฐ ์์์ ๋ง์ถฐ์ฃผ๋ ๋ณํ๊ธฐ ๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ์๋ฆฌ์ผ๋ผ์ด์ ์ ๋ํ ์ดํด๋ ์ถฉ๋ถํฉ๋๋ค.
๊ฐ๋จํ ์์ ๋ฅผ ํจ๊ป ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ฒ์ DRF ๊ฐ๋ ์ค๋ช ๊ณผ ๋ณํํ๋ฉฐ ๋ง๋ค ์์ ๋ ๋์ ์ ๋ณด API์ ๋๋ค.
๋ณ๋์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ง ์๊ณ ์๊น ๋ง๋ค์๋ ํ๋ก์ ํธ์ ์ด์ด์ ๋ด์ฉ์ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐฑ์๋๋ฅผ ์ํ Django REST Framework with ํ์ด์ฌ
COUPANG
www.coupang.com
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
'๐ฆ๋ฉ์์ด ์ฌ์์ฒ๋ผ 11๊ธฐ > ๋ฐฑ์๋๋ฅผ ์ํ Django Rest Framework' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Chapter5 ์ฐ์ต ํ๋ก์ ํธ : Todo ๋ชฉ๋ก API ๋ง๋ค๊ธฐ (0) | 2023.05.02 |
---|---|
chapter4 p.103 DRF ์ปจ์ ์ตํ๊ธฐ (0) | 2023.04.14 |
Chapter4 Django REST Framework ์ปจ์ ์ตํ๊ธฐ (0) | 2023.04.10 |
Chapter3 Django๋ก Todo ๋ชฉ๋ก ์น ์๋น์ค ๋ง๋ค๊ธฐ (0) | 2023.04.07 |
2.6.2 ์ฌ์ง ๊ฒ์๋ฌผ ๋ณด๊ธฐ ํ๋ฉด ๋ง๋ค๊ธฐ (0) | 2023.04.04 |