
Django & GraphQL
Django๋ฅผ ์ฌ์ฉํ GraphQL, Strawberry/Graphene, schema, queries, mutations, subscriptions, ์ธ์ฆ, DataLoader, N+1 ๋ฌธ์
1GraphQL์ด๋ ๋ฌด์์ด๋ฉฐ REST์์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
GraphQL์ด๋ ๋ฌด์์ด๋ฉฐ REST์์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
๋ต๋ณ
GraphQL์ Facebook์ด ๊ฐ๋ฐํ API์ฉ query ์ธ์ด์ ๋๋ค. ๊ณ ์ ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฐํํ๋ ์ฌ๋ฌ endpoint๋ฅผ ๋ ธ์ถํ๋ REST์ ๋ฌ๋ฆฌ, GraphQL์ ๋จ์ผ endpoint๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ํํ ์ง์ ํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ REST์์ ํํ ๋ฐ์ํ๋ over-fetching(๋๋ฌด ๋ง์ ๋ฐ์ดํฐ ์์ )๊ณผ under-fetching(์ฌ๋ฌ ์์ฒญ์ ํด์ผ ํจ) ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
2Django์์ ์ฌ์ฉํ ์ ์๋ ๋ ๊ฐ์ง ์ฃผ์ GraphQL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ์?
Django์์ ์ฌ์ฉํ ์ ์๋ ๋ ๊ฐ์ง ์ฃผ์ GraphQL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ์?
๋ต๋ณ
Strawberry์ Graphene-Django๋ Django์ฉ ๋ ๊ฐ์ง ์ฃผ์ GraphQL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. Graphene-Django๋ ๋ ์ฑ์ํ๊ณ ๋๋ฆฌ ์ฑํ๋์ด ์์ผ๋ฉฐ ํด๋์ค ๊ธฐ๋ฐ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. Strawberry๋ ๋ ํ๋์ ์ด๋ฉฐ ๋ค์ดํฐ๋ธ Python type hints๋ฅผ ์ฌ์ฉํ๊ณ ํ์ ๊ฒ์ฌ ๋๊ตฌ์์ ํตํฉ์ด ๋ ์ฐ์ํฉ๋๋ค. Strawberry๋ ๋ pythonicํ ๊ตฌ๋ฌธ๊ณผ ๋ค์ดํฐ๋ธ async ์ง์ ๋๋ถ์ ์ ๊ท ํ๋ก์ ํธ์ ๊ถ์ฅ๋ฉ๋๋ค.
3Django User ๋ชจ๋ธ์ ํํํ๊ธฐ ์ํด Strawberry๋ก ๊ฐ๋จํ GraphQL ํ์
์ ์ ์ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
Django User ๋ชจ๋ธ์ ํํํ๊ธฐ ์ํด Strawberry๋ก ๊ฐ๋จํ GraphQL ํ์ ์ ์ ์ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
๋ต๋ณ
Strawberry์์๋ @strawberry.type ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ dataclass ํด๋์ค์ ์ฌ์ฉํ์ฌ GraphQL ํ์ ์ ์ ์ํฉ๋๋ค. ํ๋๋ ํ์ค Python type hints(str, int ๋ฑ)๋ก ์ ์ธ๋ฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ Python์ ๋ค์ดํฐ๋ธ ํ์ ์์คํ ์ ํ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๊ณ IDE ๋ฐ mypy์ ๊ฐ์ ํ์ ๊ฒ์ฌ ๋๊ตฌ์์ ํตํฉ์ ํฅ์์ํต๋๋ค.
GraphQL์์ resolver๋ ๋ฌด์์ด๋ฉฐ ๊ทธ ์ญํ ์ ๋ฌด์์ธ๊ฐ์?
GraphQL์์ Query์ Mutation์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
+21 ๋ฉด์ ์ง๋ฌธ
๊ธฐํ Django ๋ฉด์ ์ฃผ์
Python ๊ธฐ์ด
Python ๊ฐ์ฒด ์งํฅ
Django ๊ธฐ์ด
Django Models - ๊ธฐ์ด
Django ๋ทฐ
Django ํ ํ๋ฆฟ
Django ํผ
๊ณ ๊ธ QuerySet
Django ์ธ์ฆ
Django ๋ฏธ๋ค์จ์ด
Django Admin
Django REST Framework
Django ์๊ทธ๋
ํ์ผ ์ ๋ก๋
Django ์บ์ฑ
Django ์ธ์
Django ์ด๋ฉ์ผ
Django ํ ์คํธ
Django ๋ณด์
Django ๋ฐฐํฌ
Django ORM ๊ณ ๊ธ
Django ์ฑ๋ฅ
Django & Celery
Django Channels
Django & Docker
๋ง์ดํฌ๋ก์๋น์ค ์ํ๊ณ์์์ Django
์ฌ์ฉ์ ์ ์ Django ๋ช ๋ น์ด
Django ๊ตญ์ ํ
Django ๋์์ธ ํจํด
Django Async ๋ฐ ASGI
Settings ๋ฐ ํ๋ก๋์ ๊ตฌ์ฑ
๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ฐ ๋ชจ๋ํฐ๋ง
๋ค์ ๋ฉด์ ์ ์ํด Django์ ๋ง์คํฐํ์ธ์
๋ชจ๋ ์ง๋ฌธ, flashcards, ๊ธฐ์ ํ ์คํธ, ์ฝ๋ ๋ฆฌ๋ทฐ ์ฐ์ต, ๋ฉด์ ์๋ฎฌ๋ ์ดํฐ์ ์ ๊ทผํ์ธ์.
๋ฌด๋ฃ๋ก ์์ํ๊ธฐ