์ ํ์ ์ ๋ฐฑ์๋๊ฐ๋ฐ + ํ๋ก ํธ๊ฐ๋ฐ
: ์ด๋ฒ ํ๋ก์ ํธ๋ ํํ๋ก์ ํธ๋ก ์์ํฉ๋๋ค.
* Web Client(ํ๋ก ํธ์๋) ์ Django Server(๋ฐฑ์๋)์ฌ์ด์ ์ํต๊ณผ์
โ JSON
์์คํ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํฌ๋งท. ํํ๋ ํ์ด์ฌ์ ๋์ ๋๋ฆฌ, ์๋ฐ์คํฌ๋ฆฝํธ์ ์ค๋ธ์ ํธ์ ๊ฐ๋ค.
HTTP ํต์ ์ html ์ ์ฒด๋ฅผ ๋ฆฌ๋ก๋ํ๋ ๋์ , ๋ณด๋ค ๊ฐ๋ฒผ์ด JSON ํฌ๋งท์ผ๋ก body์ ๋ด์ ํ์ํ ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ๋ฐ๋๋ค. ๊ฐ์ ๋ชฉ์ ์ผ๋ก xml, yaml ๋ฑ์ด์๋ค.
โ Frontend(Web Client)
httpie ์ค์น
brew install httpie
Request ๋ณด๋ด๊ธฐ/ httpie๋ฅผ ํตํด ์๋ฒ๋ก Request๊ฐ ๋ณด๋ด์ง๋ค.
http -v POST 127.0.01:8000/
Start line
Headers
body
โ Backend(Web Server)
์์ ๊ฐ์ด ์นํด๋ผ์ด์ธํธ, ์ฆ ํ๋ก ํธ์๋์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์์ฒญ์ ์ฅ๊ณ ์ urls.py๋ก ๋ค์ด๊ฐ๊ฒ๋๋ค.
urls.py
์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ฅ๊ณ ๋ path list ๋ฅผ ์์ฐจ์ ์ผ๋ก ํ์ธํ๋ฉฐ ํ๊ฒ๊ณผ ์ผ์นํ๋ path๊ฐ ์๋์ง ํ์ธํ ํ, ๋งค์นญ๋๋ ๊ฒ์ด ์์ผ๋ฉด request๋ฅผ ์ ๋ฌํ๋ค.
view.py
view ์์ ๋ฐ์ ์์ฒญ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง(C.R.U.D)๊ฒฐ์ ํ ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํด ๋ค์ ํ๋ก ํธ์ ์๋ตํ๋ค. ๋ฐ๋ผ์ ํ๋ก ํธ์์ ๋ฐ์ JSON์ ํ์ด์ฌ์ผ๋ก ๋ณํํ๊ณ , ๋ ์๋ตํ ๋๋ ํ์ด์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ค์ JSON์ผ๋ก ๋ณํ์ํจ๋ค.
view์์ import ํด์ผํ ๊ฒ๋ค
import json
from django.http import JsonResponse
from django.views import View
from starbucks.models import Menu, Categories, Drinks
view class
ํ๋ก ํธ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด view๋ get/post/put/delete ์ค ๋ฌด์์ธ์ง ํ์
ํ๊ณ ํด๋นํ๋ ๋ฉ์๋๋ฅผ ์คํํ๋ค.
post(self, request)
self : StarbucksView์ ์ธ์คํด์ค, view๋ ์์๋ฐ์ ๋ชจ๋์ด๊ธฐ๋๋ฌธ์ starbucks view ์ธ์ง ๋ค๋ฅธ ์ฑ์ view์ธ์ง ํ์ธ์ํฌ ํ์๊ฐ ์๋ค. ์ฌ๊ธฐ์ starbucks์ post๋ฉ์๋๋๊ฑธ ์๋ ค์ค๋ค.
request : ์ฅ๊ณ ์ ์์ฒญ์ ๋ณด๋ผ ๋, request๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ ๋ค์ body์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด post๋ฉ์๋์ ์ธ์๋ก ๋ฃ์ด์ ์ ๋ฌํด์ค๋ค
request๊ฐ์ฒด๋ JSON์ด๋ค. ๋ฐ๋ผ์ ํ์ด์ฌ์์ ์ธ์ํ ์ ์๋ ๋์ ๋๋ฆฌ๋ก ๋ฐ๊พธ์ด์ฃผ์ด์ผํ๋๋ฐ, ์ฌ๊ธฐ์ json๋ชจ๋์ loads()๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค.
ํ๋ก ํธ์ ๋ชจ๋ ์์ฒญ์ request๋ผ๋ ํ๋์ ๊ฐ์ฒด์ ๋ด๊ฒจ view๋ก ์ ๋ฌ๋๊ฒ ๋๋ค. ๋ฐ๋ผ์ request ๊ฐ์ฒด์์๋ startline, headers, body ๊ฐ ๋ชจ๋ ๋ค์ด์๋ค.
body ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋ json.load(request.body)๋ก ํ์ด์ฌ ๋์ ๋๋ฆฌ ๋ฐ์ดํฐ๋ก ๋ง๋ค์ด์ค ๋ค์, request ๊ฐ์ฒด์์ ๊บผ๋ด์ ์ฌ์ฉํ๋ฅํ๋ค.
์ค๋์ ๊ฐ๊ฐ ๋ฐ๋ก ๋ง๋ ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ์ฐ๋ํ๋ค. ๋ณดํต ํ์
์์๋ ํ๋ก ํธ์ ์๋ฒ๋ถ๋ถ์ ํ ํ๋ก์ ํธ ์์์ ๋ง๋๋ ์ผ์ ๊ฑฐ์ ์๋ค๊ณ ๋ค์๋๋ฐ, ์ด์ ๋ถํฐ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ํ์์ ์ผ๋ก ๋ฐ๋ก ๋ถ๋ฆฌํด์ ์งํํด์ ์ฐ๋ํ๋ ๊ฒ์ ์ต์ํด์ ธ์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์๊ฐ๋ณด๋ค ํ๋ก์ ํธ๊ธฐ๊ฐ์ด ๊ธธ์ง์์์ ์ธ ๋ช
์ด์ ์งํํ๋๋ฐ ์กฐ๊ธ ๋ฒ
์ฐฌ๋๋์ด ์๊ธดํ์ง๋ง ๊ทธ๋๋ ์ฐ๋ฆฌ ํ์๋ค๊ณผ ํจ๊ป ํ๋ด์ ๋ง๋ ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ถ์ข๊ฒ ์์ฐ๋ฐํํ๋ ์๊ฐ์ ๊ฐ์ก์ผ๋ฉด ์ข๊ฒ ๋ค !
๐ ์์ธํ ์ฝ๋๋ Moonmoo ์ ๊ฒ์ํ์ต๋๋ค