1 ๋ถ„ ์†Œ์š”

[๊ณต์‹ ๋ฌธ์„œ] Graphene?

๊ตฌ๊ธ€์— Graphene-django ์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ํ•˜๋ฉด ์•„๋ž˜์˜ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค

๐Ÿ‘‰ย Django - Graphene-Python

Introduction์„ ํ†ตํ•ด Graphene ์ด ๋ฌด์—‡์ธ์ง€ ๋Œ€๋žต ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ๋Š” Graphene์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค.

What is GraphQL?

Graphene์ด๋ž€, ์ฝ”๋“œ ์šฐ์„  ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ Python์—์„œ GraphQL API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
Graphene์˜ ์ฝ”๋“œ ์šฐ์„  ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ Apllo Server(JavaScript) ๋˜๋Š” Ariadne(Python)๊ณผ ๊ฐ™์€ ์Šคํ‚ค๋งˆ ์šฐ์„  ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋น„๊ตํ•˜์—ฌ Graphene์˜ GraphQL API ๊ตฌ์ถ• ๋ฐฉ์‹์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
GraphQL ์Šคํ‚ค๋งˆ ์ •์˜ ์–ธ์–ด(SDL)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹ , ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” Python ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
Graphene์€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ORM์„ ์œ„ํ•œ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์™„๋ฒฝํ•˜๊ฒŒ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค.
Graphene์€ GrpahQL ์‚ฌ์–‘์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ค€์ˆ˜ํ•˜๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฆด๋ ˆ์ด ํ˜ธํ™˜ API๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์™€ ํŒจํ„ด ๋˜ํ•œ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

Welcome to Graphene-Django

์œ„ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ ๋‘˜๋Ÿฌ๋ณด๋ฉด Django ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Flask, SQLAlchemy, FastAPI ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ๋“ค๊ณผ ํ†ตํ•ฉ๋œ ์ž์›์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์—ˆ๋‹ค..!

์ด ์ค‘์—์„œ Graphene-Django ๋ฅผ ํด๋ฆญํ•ด๋ณด์ž!

Graphene-Django๋Š” Graphene ์œ„์— ๊ตฌ์ถ•๋˜์—ˆ๋‹ค.
Graphene-Django๋Š” Django ํ”„๋กœ์ ํŠธ์— GraphQL ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ถ”์ƒํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŠœํ† ๋ฆฌ์–ผ๋“ค์„ ๋ฐ˜๋“œ์‹œ ๋”ฐ๋ผํ•˜๋ฉฐ ์ตํ˜€๋ณด์ž!

[ChatGPT] Graphene-Django์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์ค˜

๐Ÿ—ฃ๏ธย Graphene-Django์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์ค˜

Graphene-Django ๋Š” Django ์›น ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ GraphQL API๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž„.

GraphQL์€ REST API์˜ ๋Œ€์•ˆ์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํžˆ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ฟผ๋ฆฌ ์–ธ์–ด ๋‹ค!

Graphene-Django ๋Š” GraphQL์„ Django์™€ ํ†ตํ•ฉํ•˜์—ฌ ๋ณด๋‹ค ํšจ์œจ์  & ์œ ์—ฐํ•œ APi๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

์ฃผ์š” ํŠน์ง•

1. ๊ฐ„๋‹จํ•œ GraphQL ์Šคํ‚ค๋งˆ ์ •์˜

Django์˜ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ GraphQL ์Šคํ‚ค๋งˆ๋ฅผ ์‰ฝ๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

model์˜ ํ•„๋“œ๊ฐ€ ์ž๋™์œผ๋กœ GraphQL ํƒ€์ž…์œผ๋กœ ๋งคํ•‘๋˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์™€ mutation์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค!

2. Django ORM๊ณผ์˜ ํ†ตํ•ฉ

Django ORM๊ณผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉ๋˜์–ด, DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด GraphQL ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์‰ฌ์›Œ์ง„๋‹ค!

3. ๊ฐ„ํŽธํ•œ Mutation ์ฒ˜๋ฆฌ

DB์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ(CRUD ๋“ฑ)ํ•˜๋Š” ์ž‘์—…์ธ Mutation ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค!

Mutation ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์ž‘์—…์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•จ.

4. Django ๊ธฐ๋Šฅ๊ณผ์˜ ํ†ตํ•ฉ

Django์˜ ์ธ์ฆ ์‹œ์Šคํ…œ, ํ•„ํ„ฐ๋ง, ํŽ˜์ด์ง• ๊ธฐ๋Šฅ ๋“ฑ์„ GraphQL API์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด์ฒ˜๋Ÿผ Django์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋“ค๊ณผ ์ž˜ ์—ฐ๋™๋˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์–ด, ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํŽธ์˜์„ฑ์„ ์ œ๊ณตํ•จ!

5. Relay ์ง€์›

Relay ๋Š” ํŽ˜์ด์ง•, ํ•„ํ„ฐ๋ง, ์—ฐ๊ฒฐ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ํ‘œ์ค€์ด๋‹ค.

Graphene-Django ๋Š” Relay ์‚ฌ์–‘์„ ์ง€์›ํ•˜์—ฌ, ๋ณต์žกํ•œ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค!

์ฐธ๊ณ  ์ž๋ฃŒ

Graphene-Python

Graphene-Python

[Introduction to GraphQL GraphQL](https://graphql.org/learn/)

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