ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Rest-API&Graphql-API
    React 2023. 4. 24. 22:37

    ๐Ÿ“– GRAPHQL

    - GraphQL:  Server API๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Facebook์—์„œ ๋งŒ๋“  ์ฟผ๋ฆฌ ์–ธ์–ด์ด๋‹ค.

    - ์ฟผ๋ฆฌ์–ธ์–ด: ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋ณด๋‚ด๋Š” ์งˆ์˜๋ฌธ(Query)๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ปดํ“จํ„ฐ ์–ธ์–ด์ด๋‹ค. ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ ธ์žˆ๋Š” ์˜ˆ์‹œ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” SQL์ด ์žˆ๋‹ค.

     

    ๐Ÿ“– REST VS GRAPHQL

    - Graphql-API๋Š” ๋ณดํ†ต ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ฐ€์ง„๋‹ค. 

    - Graphql-API๋Š” ๋ฐฑ์—”๋“œ๋กœ ์š”์ฒญ์‹œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์‘๋‹ต ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ ์ธ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    - Rest-API๋Š” Graphql๊ณผ ๋‹ค๋ฅธ๊ฒŒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’ ๋ณด๋‹ค๋Š” ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.

     

    * ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ

    REST API๋Š” ๋ณดํ†ต ์—ฌ๋Ÿฌ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๊ฐ๊ฐ์˜ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋™์ผํ•œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ GraphQL์€ ๋ณดํ†ต ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์š”์ฒญํ•˜๋Š” ์ฟผ๋ฆฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

     

    ํ•™๊ต์˜ ๋ฐ˜, ํ•™์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์˜ˆ์‹œ๋กœ ๋‘˜์˜ ์ฐจ์ด์ ์„ ํ™•์ธํ•ด๋ณด์ž.

    EX)

    REST API
    → example.com/class
    → example.com/class/(๋ฐ˜ index)
    → example.com/class/(๋ฐ˜ index)/students
    → example.com/class/(๋ฐ˜ index)/students/(ํ•™์ƒ index)
    
    GraphQL
    → example.com
        (ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ์— ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ์š”์ฒญ)

    REST API์˜ ๊ฒฝ์šฐ ๋ฐ˜์— ์†ํ•ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ์— ์‘๋‹ต๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ GraphQL์€ ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ (Root Endpoint)์— ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋กœ ์š”์ฒญํ•จ์œผ๋กœ์จ ๋‹ค๋ฅธ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

    ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ๊ด€๋ฆฌํ•˜๊ธฐ ํž˜๋“ค ๋ฟ๋”๋Ÿฌ, ๋งŽ์€ ์—”๋“œํฌ์ธํŠธ์˜ ๋…ธ์ถœ์„ ๋ง‰๊ธฐ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š” ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

     

    ๐Ÿ“– C(reate)R(read)U(date)D(elete)

    โœ๏ธ AXIOS

    C : ์ƒ์„ฑํ•˜๋Š” API => POST

    ex)

    const reulst = axios.post(API ์ด๋ฆ„)

    R : ์กฐํšŒํ•˜๋Š” API => GET

    const result = axios.get(API ์ด๋ฆ„)

    U : ์ˆ˜์ •ํ•˜๋Š” API => PUT

    const result = axios.put(API ์ด๋ฆ„)

    D : ์‚ญ์ œํ•˜๋Š” API => DELETE

    const result = axios.delete(API ์ด๋ฆ„)

     

    โœ๏ธ Graphql

    C : ์ƒ์„ฑํ•˜๋Š” API => Mutation

    R : ์กฐํšŒํ•˜๋Š” API => Query

    U : ์ˆ˜์ •ํ•˜๋Š” API => Mutation

    D : ์‚ญ์ œํ•˜๋Š” API => Mutation

    ex)

    const result = useMuation(API ์ด๋ฆ„)
    const result = useQuery(API ์ด๋ฆ„)

     

    ์ฐธ๊ณ ๋ฌธ์„œ: https://jongminfire.dev/graph-ql%EC%9D%B4%EB%9E%80

     

    GraphQL์ด๋ž€?

    ๊ฐœ๋ฐœ์ž๋“ค์€ Server API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•œ๋‹ค. Server API๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์€ REST ์™€ GraphQL ์ด๋‹ค. GraphQL์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ REST…

    jongminfire.dev

     

Designed by Tistory.