GraphQL๊ณผ Apollo ์—ด ๋‹ค์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - React์™€ Apollo Client - Query์™€ Mutation ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

2023. 12. 10. 18:35ใ†Front-End ์ž‘์—…์‹ค/React.js

728x90
๋ฐ˜์‘ํ˜•

 

 

 

์นด์นด์˜คํŽ˜์ด | ๋งˆ์Œ ๋†“๊ณ  ๊ธˆ์œตํ•˜๋‹ค

์—ฌ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ๋งํฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

qr.kakaopay.com

 

 

 

 

 

๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ 

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

GitHub - junyharang-coding-study/GraphQL-Study: GraphQL์„ ๊ณต๋ถ€ํ•˜๊ณ , ์‹ค์Šตํ•œ ์ฝ”๋“œ์—์š” ๐Ÿ˜€

GraphQL์„ ๊ณต๋ถ€ํ•˜๊ณ , ์‹ค์Šตํ•œ ์ฝ”๋“œ์—์š” ๐Ÿ˜€. Contribute to junyharang-coding-study/GraphQL-Study development by creating an account on GitHub.

github.com

 




๐Ÿ—‚ ๋ชฉ์ฐจ

โœ… GraphQL๊ณผ Apollo ์ฒซ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - ๊ฐœ๋… ์ตํžˆ๊ธฐ
โœ… GraphQL๊ณผ Apollo ๋‘๋ฒˆ์งธ ์ด์•ผ๊ธฐ - REST API๋ž€?
โœ… GraphQL๊ณผ Apollo ์„ธ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL์˜ ์ •๋ณด ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹

โœ… GraphQL๊ณผ Apollo ๋„ค๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Apollo๋ž€?
โœ… GraphQL๊ณผ Apollo ๋‹ค์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด ๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์—ฌ์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL Moduleํ™”์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์ผ๊ณฑ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL Data Type์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์—ฌ๋Ÿ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL Union๊ณผ Interface ๊ทธ๋ฆฌ๊ณ  ์ธ์ž์™€ ์ธํ’‹ ํƒ€์ž…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์•„ํ™‰๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Java + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ
โœ… GraphQL๊ณผ Apollo ์—ด๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Java + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ•ด๋ณด๊ธฐ
โœ… GraphQL๊ณผ Apollo ์—ด ํ•œ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - TypeScript + Nest.js์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ
โœ… 
GraphQL๊ณผ Apollo ์—ด ๋‘๋ฒˆ์งธ ์ด์•ผ๊ธฐ - TypeScript + Nest.js์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ํ…Œ์ŠคํŠธ
โœ… GraphQL๊ณผ Apollo ์—ด ์„ธ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - TypeScript + Nest์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ•ด๋ณด๊ธฐ
โœ… 
GraphQL๊ณผ Apollo ์—ด ๋„ค๋ฒˆ์งธ ์ด์•ผ๊ธฐ - React์™€ Apollo Client
โœ… GraphQL๊ณผ Apollo ์—ด๋‹ค์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - React์™€ Apollo Client - Query์™€ Mutation ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ
โœ… GraphQL๊ณผ Apollo ์—ด ์—ฌ์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Kotlin + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ
โœ… GraphQL๊ณผ Apollo ์—ด ์ผ๊ณฑ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Kotlin + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ•ด๋ณด๊ธฐ


๐Ÿค” ๋‚ด๊ฐ€ ๋งŒ๋‚œ ๋ฌธ์ œ

โš ๏ธ [Nest.js] TypeORM Table ๊ด€๊ณ„๊ฐ€ ๋งบ์–ด์กŒ์„ ๋•Œ, Seeding (feat. Migration)
โš ๏ธ [Spring Boot 3.0] Could not resolve org.springframework.boot:spring-boot-gradle-plugin
โš ๏ธ [Spring Boot 3] Spring Doc(Swagger) White Label Error


๐Ÿ“‹ ๋ถ€๋ก

๐Ÿ” [Nest.js] ์ดˆ๊ธฐ ํ™˜๊ฒฝ ๊ตฌ์„ฑ (feat. TypeORM, QueryBuilder, GraphQL, Apollo)
๐Ÿ” [SOLID][Nest.js][Java + Spring] Interface๋ฅผ ํ™œ์šฉํ•œ ๊ฒฐํ•ฉ๋„ ๋ถ„๋ฆฌ (Interface๋ฅผ ์ด์šฉํ•œ Dependency Injection - DI)

 

 

 

 

๐Ÿš€ GraphQL๊ณผ Apollo ์—ด ๋‹ค์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ

    ๐Ÿ”ฝ  React์™€ Apollo Client

        ๐Ÿ“ฆ Query๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

์ด๋ฒˆ์—๋Š” Team์„ ์ด์šฉํ•ด์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด ๋ณผ๊ฒŒ์š”.

src/components/teams.js


ํ•„์š”ํ•œ Module(๋ชจ๋“ˆ)์„ Import ํ•ด ์ค๋‹ˆ๋‹ค.
์ด๋ฒˆ์—๋Š” Mutation์„ ์‚ฌ์šฉํ•ด ๋ณผ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— useMutation๋„ ์ถ”๊ฐ€๊ฐ€ ๋˜์—ˆ์–ด์š”.


src/components/teams.js


useStatus()๋Š” React์˜ ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ณ€์ˆ˜์— ๋งž์ถฐ ๋ณ€ํ™” ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ ค์ฃผ๋Š” ์นœ๊ตฌ์—์š”.

BackEnd - src/graphql/schema/schema.graphqls

 

src/graphql/schema/team/team.graphqls

 

src/graphql/schema/team/team.graphqls

 

src/graphql/schema/people/people.graphqls


์ด๋ฒˆ์—๋Š” Team ๋ชฉ๋ก๊ณผ ํ•ด๋‹น Team์— ์†Œ์†๋œ ํŒ€์›์„ ๊ฐ€์ ธ์˜ค๋Š” Query๋ฅผ ์ž‘์„ฑํ•ด ๋ณผ๊ฒŒ์š”.

์ด Query๋Š” teamId๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น Team์— ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์•ˆ ๋„ฃ์œผ๋ฉด ๋ชจ๋“  Team ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์š”.



http://localhost:8081/graphql (teamId๋ฅผ ์•ˆ ๋„ฃ์—ˆ์„ ๋•Œ)

 

{
  "data": {
    "getTeamAndMembersByTeamIdOrNothing": {
      "statusCode": 200,
      "message": "Success",
      "data": [
        {
          "teamId": "1",
          "manager": "Mandy Warren",
          "office": "101A",
          "extensionNumber": "#5709",
          "mascot": "Panda",
          "cleaningDuty": "Monday",
          "project": "Hyperion",
          "members": [
            {
              "peopleId": "3",
              "teamId": 1,
              "lastName": "Nathan",
              "firstName": "Jenkins",
              "sex": "male",
              "bloodType": "B",
              "serveYears": 1,
              "role": "planner",
              "hometown": "Texas"
            },
            {
              "peopleId": "8",
              "teamId": 1,
              "lastName": "Isabella",
              "firstName": "Martin",
              "sex": "female",
              "bloodType": "A",
              "serveYears": 3,
              "role": "developer",
              "hometown": "Georgia"
            },
            {
              "peopleId": "12",
              "teamId": 1,
              "lastName": "Kate",
              "firstName": "Owen",
              "sex": "female",
              "bloodType": "B",
              "serveYears": 2,
              "role": "developer",
              "hometown": "Maine"
            },
            {
              "peopleId": "16",
              "teamId": 1,
              "lastName": "Byron",
              "firstName": "Barnes",
              "sex": "male",
              "bloodType": "A",
              "serveYears": 3,
              "role": "designer",
              "hometown": "Idaho"
            },
            {
              "peopleId": "27",
              "teamId": 1,
              "lastName": "Brian",
              "firstName": "Hunt",
              "sex": "male",
              "bloodType": "B",
              "serveYears": 2,
              "role": "planner",
              "hometown": "Indiana"
            },
            {
              "peopleId": "29",
              "teamId": 1,
              "lastName": "Violet",
              "firstName": "Pearson",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 5,
              "role": "designer",
              "hometown": "Pennsylvania"
            },
            {
              "peopleId": "35",
              "teamId": 1,
              "lastName": "Sally",
              "firstName": "Fox",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 5,
              "role": "planner",
              "hometown": "Messachusetts"
            },
            {
              "peopleId": "42",
              "teamId": 1,
              "lastName": "Russ",
              "firstName": "Lawrence",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 5,
              "role": "designer",
              "hometown": "New York"
            },
            {
              "peopleId": "47",
              "teamId": 1,
              "lastName": "Leroy",
              "firstName": "Elliott",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 2,
              "role": "developer",
              "hometown": "Indiana"
            },
            {
              "peopleId": "50",
              "teamId": 1,
              "lastName": "Ned",
              "firstName": "Butler",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 2,
              "role": "planner",
              "hometown": "Messachusetts"
            }
          ]
        },
        {
          "teamId": "2",
          "manager": "Stewart Grant",
          "office": "101B",
          "extensionNumber": "#4012",
          "mascot": "Tadpole",
          "cleaningDuty": "Tuesday",
          "project": "Zen",
          "members": [
            {
              "peopleId": "1",
              "teamId": 2,
              "lastName": "Alex",
              "firstName": "Davidson",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 2,
              "role": "developer",
              "hometown": "California"
            },
            {
              "peopleId": "5",
              "teamId": 2,
              "lastName": "Page",
              "firstName": "Adams",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 5,
              "role": "developer",
              "hometown": "California"
            },
            {
              "peopleId": "7",
              "teamId": 2,
              "lastName": "Dennis",
              "firstName": "Marshall",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 1,
              "role": "planner",
              "hometown": "Colorado"
            },
            {
              "peopleId": "15",
              "teamId": 2,
              "lastName": "Page",
              "firstName": "Adams",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 5,
              "role": "developer",
              "hometown": "California"
            },
            {
              "peopleId": "20",
              "teamId": 2,
              "lastName": "Eleanor",
              "firstName": "Smith",
              "sex": "female",
              "bloodType": "B",
              "serveYears": 2,
              "role": "planner",
              "hometown": "Texas"
            },
            {
              "peopleId": "24",
              "teamId": 2,
              "lastName": "Zelda",
              "firstName": "Hall",
              "sex": "female",
              "bloodType": "A",
              "serveYears": 3,
              "role": "developer",
              "hometown": "Tennessee"
            },
            {
              "peopleId": "33",
              "teamId": 2,
              "lastName": "Victoria",
              "firstName": "Brown",
              "sex": "female",
              "bloodType": "B",
              "serveYears": 4,
              "role": "planner",
              "hometown": "Georgia"
            },
            {
              "peopleId": "44",
              "teamId": 2,
              "lastName": "Nancy",
              "firstName": "Brooks",
              "sex": "female",
              "bloodType": "A",
              "serveYears": 1,
              "role": "developer",
              "hometown": "California"
            },
            {
              "peopleId": "45",
              "teamId": 2,
              "lastName": "Oliver",
              "firstName": "Simpson",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 3,
              "role": "designer",
              "hometown": "Arizona"
            },
            {
              "peopleId": "49",
              "teamId": 2,
              "lastName": "Simon",
              "firstName": "Henderson",
              "sex": "male",
              "bloodType": "A",
              "serveYears": 4,
              "role": "designer",
              "hometown": "Pennsylvania"
            }
          ]
        },
        {
          "teamId": "3",
          "manager": "Smantha Wheatly",
          "office": "102A",
          "extensionNumber": "#3852",
          "mascot": "Falcon",
          "cleaningDuty": "Wednesday",
          "project": "Duranno",
          "members": [
            {
              "peopleId": "2",
              "teamId": 3,
              "lastName": "Lindsay",
              "firstName": "West",
              "sex": "female",
              "bloodType": "A",
              "serveYears": 3,
              "role": "designer",
              "hometown": "Arizona"
            },
            {
              "peopleId": "11",
              "teamId": 3,
              "lastName": "Noelle",
              "firstName": "Holmes",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 5,
              "role": "planner",
              "hometown": "California"
            },
            {
              "peopleId": "14",
              "teamId": 3,
              "lastName": "Shirley",
              "firstName": "Grant",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 1,
              "role": "developer",
              "hometown": "Messachusetts"
            },
            {
              "peopleId": "17",
              "teamId": 3,
              "lastName": "Toby",
              "firstName": "Lewis",
              "sex": "male",
              "bloodType": "A",
              "serveYears": 1,
              "role": "planner",
              "hometown": "New York"
            },
            {
              "peopleId": "22",
              "teamId": 3,
              "lastName": "Jamie",
              "firstName": "Reynolds",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 1,
              "role": "designer",
              "hometown": "Arizona"
            },
            {
              "peopleId": "31",
              "teamId": 3,
              "lastName": "Raymond",
              "firstName": "Cook",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 1,
              "role": "planner",
              "hometown": "Kansas"
            },
            {
              "peopleId": "34",
              "teamId": 3,
              "lastName": "Russel",
              "firstName": "Jones",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 2,
              "role": "designer",
              "hometown": "Nebraska"
            },
            {
              "peopleId": "38",
              "teamId": 3,
              "lastName": "Grant",
              "firstName": "Cole",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 4,
              "role": "designer",
              "hometown": "Pennsylvania"
            },
            {
              "peopleId": "40",
              "teamId": 3,
              "lastName": "Amber",
              "firstName": "Russel",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 5,
              "role": "developer",
              "hometown": "Kansas"
            },
            {
              "peopleId": "46",
              "teamId": 3,
              "lastName": "Pansy",
              "firstName": "Moore",
              "sex": "female",
              "bloodType": "B",
              "serveYears": 2,
              "role": "planner",
              "hometown": "Minnesota"
            }
          ]
        },
        {
          "teamId": "4",
          "manager": "Francis Buckley",
          "office": "103B",
          "extensionNumber": "#1039",
          "mascot": "Beaver",
          "cleaningDuty": "Thursday",
          "project": "Genghis",
          "members": [
            {
              "peopleId": "4",
              "teamId": 4,
              "lastName": "Christine",
              "firstName": "Harris",
              "sex": "female",
              "bloodType": "B",
              "serveYears": 2,
              "role": "developer",
              "hometown": "Ohio"
            },
            {
              "peopleId": "9",
              "teamId": 4,
              "lastName": "Alfred",
              "firstName": "Clarke",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 4,
              "role": "designer",
              "hometown": "Pennsylvania"
            },
            {
              "peopleId": "13",
              "teamId": 4,
              "lastName": "Priscilla",
              "firstName": "Walker",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 2,
              "role": "developer",
              "hometown": "California"
            },
            {
              "peopleId": "18",
              "teamId": 4,
              "lastName": "Barbara",
              "firstName": "White",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 4,
              "role": "developer",
              "hometown": "Ohio"
            },
            {
              "peopleId": "19",
              "teamId": 4,
              "lastName": "Arnold",
              "firstName": "Armstrong",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 5,
              "role": "designer",
              "hometown": "Nevada"
            },
            {
              "peopleId": "23",
              "teamId": 4,
              "lastName": "Myrtle",
              "firstName": "Hamilton",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 1,
              "role": "developer",
              "hometown": "Maine"
            },
            {
              "peopleId": "25",
              "teamId": 4,
              "lastName": "Edgar",
              "firstName": "Willson",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 2,
              "role": "designer",
              "hometown": "Texas"
            },
            {
              "peopleId": "26",
              "teamId": 4,
              "lastName": "Naomi",
              "firstName": "Taylor",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 5,
              "role": "developer",
              "hometown": "Oklahoma"
            },
            {
              "peopleId": "36",
              "teamId": 4,
              "lastName": "Chloe",
              "firstName": "Bailey",
              "sex": "female",
              "bloodType": "A",
              "serveYears": 5,
              "role": "developer",
              "hometown": "New York"
            },
            {
              "peopleId": "41",
              "teamId": 4,
              "lastName": "Peter",
              "firstName": "Payne",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 3,
              "role": "planner",
              "hometown": "California"
            }
          ]
        },
        {
          "teamId": "5",
          "manager": "Blake Smith",
          "office": "104A",
          "extensionNumber": "#7750",
          "mascot": "Wildcat",
          "cleaningDuty": "Friday",
          "project": "Acheron",
          "members": [
            {
              "peopleId": "6",
              "teamId": 5,
              "lastName": "Herbert",
              "firstName": "Ford",
              "sex": "male",
              "bloodType": "A",
              "serveYears": 2,
              "role": "designer",
              "hometown": "Messachusetts"
            },
            {
              "peopleId": "10",
              "teamId": 5,
              "lastName": "Tyler",
              "firstName": "Philips",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 1,
              "role": "designer",
              "hometown": "Virginia"
            },
            {
              "peopleId": "21",
              "teamId": 5,
              "lastName": "Nina",
              "firstName": "Dawson",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 1,
              "role": "developer",
              "hometown": "Virginia"
            },
            {
              "peopleId": "28",
              "teamId": 5,
              "lastName": "Katherine",
              "firstName": "Bennett",
              "sex": "female",
              "bloodType": "A",
              "serveYears": 3,
              "role": "designer",
              "hometown": "Utah"
            },
            {
              "peopleId": "30",
              "teamId": 5,
              "lastName": "Margaret",
              "firstName": "Davies",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 2,
              "role": "developer",
              "hometown": "California"
            },
            {
              "peopleId": "32",
              "teamId": 5,
              "lastName": "Garth",
              "firstName": "Roberts",
              "sex": "male",
              "bloodType": "A",
              "serveYears": 4,
              "role": "designer",
              "hometown": "Minnesota"
            },
            {
              "peopleId": "37",
              "teamId": 5,
              "lastName": "Will",
              "firstName": "McDonald",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 1,
              "role": "developer",
              "hometown": "Wyoming"
            },
            {
              "peopleId": "39",
              "teamId": 5,
              "lastName": "Audrey",
              "firstName": "Fisher",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 2,
              "role": "designer",
              "hometown": "Ohio"
            },
            {
              "peopleId": "43",
              "teamId": 5,
              "lastName": "Margot",
              "firstName": "Watson",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 2,
              "role": "planner",
              "hometown": "Virginia"
            },
            {
              "peopleId": "48",
              "teamId": 5,
              "lastName": "Barbara",
              "firstName": "Murphy",
              "sex": "female",
              "bloodType": "O",
              "serveYears": 1,
              "role": "developer",
              "hometown": "Texas"
            }
          ]
        }
      ]
    }
  }
}



http://localhost:8081/graphql (teamId๋ฅผ 1๋กœ ๋„ฃ์—ˆ์„ ๋•Œ)

 

{
  "data": {
    "getTeamAndMembersByTeamIdOrNothing": {
      "statusCode": 200,
      "message": "Success",
      "data": [
        {
          "teamId": "1",
          "manager": "Mandy Warren",
          "office": "101A",
          "extensionNumber": "#5709",
          "mascot": "Panda",
          "cleaningDuty": "Monday",
          "project": "Hyperion",
          "members": [
            {
              "peopleId": "3",
              "teamId": 1,
              "lastName": "Nathan",
              "firstName": "Jenkins",
              "sex": "male",
              "bloodType": "B",
              "serveYears": 1,
              "role": "planner",
              "hometown": "Texas"
            },
            {
              "peopleId": "8",
              "teamId": 1,
              "lastName": "Isabella",
              "firstName": "Martin",
              "sex": "female",
              "bloodType": "A",
              "serveYears": 3,
              "role": "developer",
              "hometown": "Georgia"
            },
            {
              "peopleId": "12",
              "teamId": 1,
              "lastName": "Kate",
              "firstName": "Owen",
              "sex": "female",
              "bloodType": "B",
              "serveYears": 2,
              "role": "developer",
              "hometown": "Maine"
            },
            {
              "peopleId": "16",
              "teamId": 1,
              "lastName": "Byron",
              "firstName": "Barnes",
              "sex": "male",
              "bloodType": "A",
              "serveYears": 3,
              "role": "designer",
              "hometown": "Idaho"
            },
            {
              "peopleId": "27",
              "teamId": 1,
              "lastName": "Brian",
              "firstName": "Hunt",
              "sex": "male",
              "bloodType": "B",
              "serveYears": 2,
              "role": "planner",
              "hometown": "Indiana"
            },
            {
              "peopleId": "29",
              "teamId": 1,
              "lastName": "Violet",
              "firstName": "Pearson",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 5,
              "role": "designer",
              "hometown": "Pennsylvania"
            },
            {
              "peopleId": "35",
              "teamId": 1,
              "lastName": "Sally",
              "firstName": "Fox",
              "sex": "female",
              "bloodType": "AB",
              "serveYears": 5,
              "role": "planner",
              "hometown": "Messachusetts"
            },
            {
              "peopleId": "42",
              "teamId": 1,
              "lastName": "Russ",
              "firstName": "Lawrence",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 5,
              "role": "designer",
              "hometown": "New York"
            },
            {
              "peopleId": "47",
              "teamId": 1,
              "lastName": "Leroy",
              "firstName": "Elliott",
              "sex": "male",
              "bloodType": "AB",
              "serveYears": 2,
              "role": "developer",
              "hometown": "Indiana"
            },
            {
              "peopleId": "50",
              "teamId": 1,
              "lastName": "Ned",
              "firstName": "Butler",
              "sex": "male",
              "bloodType": "O",
              "serveYears": 2,
              "role": "planner",
              "hometown": "Messachusetts"
            }
          ]
        }
      ]
    }
  }
}



FrontEnd - src/components/teams.js


BackEnd Schema์— ๋งž์ถฐ Query๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์—ˆ์–ด์š”.

 

FrontEnd - src/components/teams.js

728x90

FrontEnd - src/components/teams.js


๋น„์–ด์žˆ๋˜ AsideItems() ๋ฅผ ์œ„์™€ ๊ฐ™์ด ์ฑ„์›Œ ์ฃผ์—ˆ์–ด์š”.


http://localhost:3000/


๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด ๊ฐ ํŒ€์— ์†Œ์†๋œ ํŒ€์›๋“ค์˜ ๋ชฉ๋ก์„ ํ†ตํ•ด ๊ฒ€์ •์ƒ‰ Side ๋ถ€๋ถ„์„ ์ฑ„์šด๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
๊ทธ๋ฆฌ๊ณ , ํŒ€์›์˜ ์—ญํ• ์— ๋”ฐ๋ผ Icon(์•„์ด์ฝ˜)์ด ํ‘œ์‹œ๋œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ฃ .
๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋กœ ํ™•์ธํ•ด ๋ณด๋‹ˆ ๊ฐ’๋„ ์ž˜ ๊ฐ€์ ธ์˜จ ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.


src/App.js


Site๊ฐ€ ์ƒˆ๋กœ ์‹คํ–‰ ๋˜์—ˆ์„ ๋•Œ, ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒ€์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด App.js์—
useState()๋ฅผ Roles์—์„œ Teams๋กœ ๋ณ€๊ฒฝํ•ด ์ฃผ์—ˆ์–ด์š”.


http://localhost:3000/


์ด์ œ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด ํŒ€ ์ •๋ณด๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

ํ˜„์žฌ๋Š” ๋ชจ๋“  ํŒ€์˜ ์ •๋ณด์™€ ํŒ€์›๋“ค์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ,
ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์š”์ฒญํ•˜๊ฒŒ Query๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ Overfetching ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋ณผ๊ฒŒ์š”.


FrontEnd - src/components/teams.js



http://localhost:3000/


์œ„์™€ ๊ฐ™์ด ํ•„์š”ํ•œ ๊ฐ’๋งŒ ์š”์ฒญํ•˜์—ฌ ๋ฐ›์•„์˜จ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.


 

 

        ๐Ÿ“ฆ ํŒ€์› ์„ ํƒ

์ด๋ฒˆ์—๋Š” ํŒ€์„ ์„ ํƒํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ํŒ€ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ํšŒ์ƒ‰ ๋ถ€๋ถ„์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•ด ๋ณผ๊ฒŒ์š”.

BackEnd - src/graphql/schema/schema.graphqls

 

src/graphql/schema/team/team.graphqls

 

src/graphql/schema/team/team.graphqls




http://localhost:8081/graphql



FrontEnd - src/components/teams.js


์œ„์˜ Query๋Š” teamId๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ํŒ€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ Query์—์š”.


src/components/teams.js

๋ฐ˜์‘ํ˜•

src/components/teams.js

 

src/components/teams.js

 

src/components/teams.js

 

src/components/teams.js


์œ„์™€ ๊ฐ™์ด ๋น„์–ด ์žˆ๋˜ MainContents()๋ฅผ ์ฑ„์›Œ ์ฃผ์—ˆ์–ด์š”.


http://localhost:3000/



๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๊ณ , ํŒ€์„ ์„ ํƒํ•˜๋ฉด

http://localhost:3000/


๊ฐ ํŒ€์˜ ์ •๋ณด๋“ค์ด input Element(์—˜๋ฆฌ๋จผํŠธ)๋“ค์˜ ๊ฐ’์œผ๋กœ ์ฑ„์›Œ ๋„ฃ์–ด์ง€๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.


src/components/teams.js

 

src/components/teams.js



์ด๋ ‡๊ฒŒ ํŒ€์„ ํด๋ฆญํ–ˆ์„ ๋•Œ, ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” 77๋ฒˆ์งธ ์ค„์— onClick(๋งˆ์šฐ์Šค๋กœ ํด๋ฆญ ์ด๋ฒคํŠธ)๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค 
setContentId๋กœ ํ•ด๋‹น ํŒ€์˜ ID๊ฐ€ ์ „๋‹ฌ๋˜๊ฒŒ ๋ผ์š”.

ํ•ด๋‹น contentId๋ฅผ ๊ธฐ์ค€์œผ๋กœ 

src/components/teams.js


102๋ฒˆ์งธ ์ค„์— ์ธ์ž๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋˜๊ฒŒ ๋˜๊ณ ,

src/components/teams.js


ํ•ด๋‹น ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ํŒ€์˜ ์ •๋ณด๋ฅผ GraphQL Server๋กœ ์š”์ฒญํ•˜์—ฌ ๊ฐ’์„ ๋ฐ›์•„์™€ ์ง€๋Š” ๊ฒƒ์ด์—์š”.


http://localhost:3000/


๊ทธ๋ž˜์„œ Team์„ ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค teamId๋ฅผ GraphQL Server๋กœ ์š”์ฒญํ•˜๊ฒŒ ๋˜๊ณ , ํ•ด๋‹น ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์ด์—์š”.



 

 

 

        ๐Ÿ“ฆ Mutation ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ - ํ•ญ๋ชฉ ์‚ญ์ œ

์ด๋ฒˆ์—๋Š” Mutation์„ ์‚ฌ์šฉํ•ด์„œ GraphQL์— ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”.

BackEnd - src/graphql/schema/schema.graphqls

 

BackEnd - src/graphql/schema/team/team.graphqls

 

http://localhost:8081/graphql



FrontEnd - src/components/teams.js


์œ„์™€ ๊ฐ™์ด teamId๋ฅผ ๋ฐ›์•„ Team ์‚ญ์ œ ์š”์ฒญ์„ ๋ณด๋‚ผ Query ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด ์ฃผ์—ˆ์–ด์š”.


FrontEnd - src/components/teams.js


Teams() ์•„๋ž˜์ชฝ์— ์œ„์™€ ๊ฐ™์ด ์‚ญ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์—ˆ์–ด์š”.


์ด ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด ๋ณด๋ฉด

FrontEnd - src/components/teams.js


์ด์šฉ์ž๊ฐ€ ์–ด๋–ค ํŒ€์„ ์„ ํƒํ•˜๊ณ , ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด

214๋ฒˆ์งธ ์ค„์˜ execDeleteTeam()์ด ํ˜ธ์ถœ๋˜๊ฒŒ ๋งŒ๋“ค๊ฑฐ์—์š”.

FrontEnd - src/components/teams.js


๋ฐ”๋กœ ์ด๋ ‡๊ฒŒ ๋ง์ด์—์š”.

๊ทธ๋Ÿผ ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด execDeleteTeam()๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ , 
์ตœ์ดˆ 215๋ฒˆ์งธ ์ค„์„ ํ†ตํ•ด ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ฒ ๋ƒ๋Š” ์งˆ๋ฌธ์„ ํ•˜๊ฒŒ ๋ ๊ฑฐ๊ณ , ์‚ญ์ œํ•˜๊ฒ ๋‹ค๊ณ  ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด 

FrontEnd - src/components/teams.js



220๋ฒˆ์งธ ์ค„์˜ useMutaion()์œผ๋กœ ์ง€์ •๋œ
DELETE_TEAM์ด๋ผ๋Š” Mutation์„ GraphQL Server๋กœ ์š”์ฒญํ•˜๊ฒŒ ๋ ๊ฑฐ์—์š”.

๊ทธ๋Ÿฐ ๋’ค GraphQL Server๋กœ๋ถ€ํ„ฐ ๋ฐ›๊ฒŒ ๋œ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ
220๋ฒˆ์งธ ์ค„ onCompleted์˜ deleteTeamCompleted()์ด ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜์–ด 222 ~ 226๋ฒˆ์งธ ์ค„ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ผ์š”.

223๋ฒˆ์งธ ์ค„์„ ํ†ตํ•ด ์‘๋‹ต๊ฐ’์„ Log๋กœ ์ถœ๋ ฅํ•ด ์ฃผ๊ณ , ๊ฒฝ๊ณ ์ฐฝ์„ ํ†ตํ•ด ํ•ญ๋ชฉ์ด ์‚ญ์ œ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ฒŒ ์ฒ˜๋ฆฌํ•ด ๋ณด์•˜์–ด์š”.
๋งˆ์ง€๋ง‰์œผ๋กœ๋Š” ์‚ญ์ œ๊ฐ€ ์™„๋ฃŒ ๋˜์—ˆ์œผ๋‹ˆ ์•„๋ฌด ํŒ€๋„ ์„ ํƒ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ ์œ„ํ•ด 225๋ฒˆ์งธ ์ค„๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด ๋‘์—ˆ์–ด์š”.


http://localhost:3000/


ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ Console(์ฝ˜์†”)๋กœ ์—ด์–ด์ฃผ์—ˆ์–ด์š”.
๊ทธ๋ฆฌ๊ณ , 2ํŒ€์„ ์„ ํƒํ•ด ์ค„๊ฒŒ์š”.

http://localhost:3000/


์ด๋ฒˆ์—” ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณผ๊ฒŒ์š”.

http://localhost:3000/


๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด ์‚ญ์ œํ•  ๊ฑฐ๋ƒ๋Š” ์งˆ๋ฌธ์ด ๋‚˜์˜จ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.

ํ™•์ธ์„ ๋ˆŒ๋Ÿฌ๋ณผ๊ฒŒ์š”.


http://localhost:3000/


์œ„์™€ ๊ฐ™์ด ๋ช‡ ํŒ€์˜ ID๊ฐ€ ์‚ญ์ œ ๋˜์—ˆ๋Š”์ง€ ๊ฒฝ๊ณ ์ฐฝ์„ ํ†ตํ•ด ์•Œ๋ ค์ฃผ๊ณ  ์žˆ์–ด์š”.

Console.log๋ฅผ ๋ณด๋ฉด ์‘๋‹ต๊ฐ’์ด ์ถœ๋ ฅ๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๊ณ , data๋กœ ์‚ญ์ œ๋œ teamId๊ฐ€ ๋ฐ˜ํ™˜๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๊ทผ๋ฐ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด Team2์˜ ๋ชฉ๋ก์ด ๋‚จ์•„์žˆ์„ ๊ฑฐ์—์š”.
์ƒˆ๋กœ ๊ณ ์นจ์„ ํ•˜๊ฒŒ ๋˜๋ฉด

http://localhost:3000/


์ด๋ ‡๊ฒŒ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ ๊ฑฐ์—์š”.

์ด ์ด์œ ๋Š” ๋ฐ”๋€ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”. ์ฆ‰, Randering ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

๊ทธ๋Ÿผ Re Randering์ด ์•Œ์•„์„œ ๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด ๋ณผ๊ฒŒ์š”.


FrontEnd - src/components/teams.js


์—ฌํƒœ ์„ ์–ธ๋งŒ ํ•˜๊ณ , ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋˜ 72๋ฒˆ์งธ ์ค„์˜ refetch()๋ฅผ ์ด์šฉํ•ด ๋ณผ๊ฑฐ์—์š”.
refetch()๋ฅผ ์ด์šฉํ•˜๋ฉด GraphQL Server์— Query๋ฅผ ๋‹ค์‹œ ์š”์ฒญํ•ด์„œ Data๋ฅผ ๋ฐ›์•„์˜ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด์š”.


FrontEnd - src/components/teams.js


์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด teams() ์œ„์— ์ „์—ญ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์ฃผ์—ˆ์–ด์š”.

 

FrontEnd - src/components/teams.js


๊ทธ๋ฆฌ๊ณ , refetch() ๊ฒฐ๊ณผ ๊ฐ’์ด ์„ ์–ธํ•ด์ค€ ์ „์—ญ ๋ณ€์ˆ˜์— ๋‹ด๊ธฐ๋„๋ก ํ•ด ์ฃผ์—ˆ์–ด์š”.


FrontEnd - src/components/teams.js


ํ•ด๋‹น Logic(๋กœ์ง)์€ ์‚ญ์ œ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  ๋‚˜์„œ ๋ฐ”๋กœ ์ง„ํ–‰๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 228๋ฒˆ์งธ ์ค„๊ณผ ๊ฐ™์ด ์„ ์–ธํ•ด ์ฃผ์—ˆ์–ด์š”.

๋‹ค์‹œ Site๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•˜๊ณ , ์ž˜ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ Test ํ•ด๋ณผ๊ฒŒ์š”. ์ด๋ฒˆ์—๋Š” 5๋ฒˆ ํŒ€์„ ๋‚ ๋ ค๋ณผ๊ฒŒ์š”.

http://localhost:3000/

 

http://localhost:3000/

 

http://localhost:3000/

 

http://localhost:3000/


์‚ญ์ œ๋ฅผ ํ•œ ๋’ค ๋‹ค์‹œ GraphQL Server์— Team ์ •๋ณด ์š”์ฒญ์„ ๋ณด๋‚ด ๊ฐ’์„ ๋ฐ›์•„์™€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜์ง€ ์•Š์•˜์Œ์—๋„
Team 5๋ฒˆ ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์ง„๊ฑธ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.

 

 

 

 

        ๐Ÿ“ฆ Mutation ์‚ฌ์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ - ํ•ญ๋ชฉ ์ˆ˜์ •

์ด๋ฒˆ์—๋Š” CRUD์˜ Update ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด ๋ณผ๊ฒŒ์š”.

BackEnd - src/graphql/schema/schema.graphqls

 

BackEnd - src/graphql/schema/schema.graphqls



BackEnd - src/graphql/schema/team/team.graphqls

 

http://localhost:8081/graphql



http://localhost:3000/

 

FrontEnd - src/components/teams.js



FrontEnd - src/components/teams.js


Teams() ์•ˆ์— ์œ„์™€ ๊ฐ™์ด ์ˆ˜์ • ๊ด€๋ จ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ์–ด์š”.



FrontEnd - src/components/teams.js


๊ทธ๋ฆฌ๊ณ , ์ˆ˜์ • ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜๋ฉด ํ•ด๋‹น ์ด๋ฒคํŠธ๋กœ ์ธํ•ด execUpdateTeam()์ด ํ˜ธ์ถœ๋˜๊ฒŒ ํ•ด ๋‘์—ˆ์–ด์š”.

์ฐธ๊ณ ๋กœ Mutation์— ์ธ์ž์ธ ๊ฐ์ฒด๋Š” 228๋ฒˆ์งธ ์ค„ variables๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค.


inputs๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•ด์š”.

http://localhost:3000/


์œ„์™€ ๊ฐ™์ด input ๋“ค์— ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋ฉด


137 ~ 142๋ฒˆ์งธ ์ค„๊ณผ ๊ฐ™์ด Inputs์— ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ์—์š”.

์ž˜ ๋˜๋Š”์ง€ ํ•œ๋ฒˆ Test ํ•ด ๋ณผ๊ฒŒ์š”.

http://localhost:3000/


4๋ฒˆ Team์„ ๊ฐ€์ง€๊ณ  Test ํ•ด ๋ณผ๊ฒŒ์š”.


์œ„์™€ ๊ฐ™์ด ๊ด€๋ฆฌ์ž ์ด๋ฆ„์„ Junyss๋กœ ๋ฐ”๊ฟ”๋ณด๋ ค๊ณ  ํ•ด์š”.
๊ทธ๋Ÿฐ ๋‹ค์Œ ์ˆ˜์ • ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณผ๊ฒŒ์š”.

http://localhost:3000/



http://localhost:3000/


์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.









        ๐Ÿ“ฆ Mutation ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ - ํ•ญ๋ชฉ ๋“ฑ๋ก

BackEnd - src/graphql/schema/schema.graphqls

 

BackEnd - src/graphql/schema/team/team.graphqls

 

BackEnd - src/graphql/schema/team/team.graphqls



http://localhost:8081/graphql



FrontEnd - src/components/teams.js

 

FrontEnd - src/components/teams.js


Teams() ์•ˆ์— ๋“ฑ๋ก์„ ์œ„ํ•œ ๋กœ์ง์„ ์œ„์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ์–ด์š”.


FrontEnd - src/components/teams.js

 

 

http://localhost:3000/


์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด ์ฃผ๊ณ , ๋“ฑ๋ก ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณผ๊ฒŒ์š”.


http://localhost:3000/

 

 

http://localhost:3000/


์ด๋ ‡๊ฒŒ ์ •์ƒ ์ถ”๊ฐ€ ๋˜์—ˆ๊ณ , ํŒ€์›์€ ์—†๋‹ค๋ณด๋‹ˆ ์œ„์™€ ๊ฐ™์ด ๋‚˜์˜จ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.


์ด๋ ‡๊ฒŒ GraphQL์˜ Query์™€ Mutation์„ ์‚ฌ์šฉํ•˜์—ฌ
GraphQL Server์—๊ฒŒ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ณ , ๋“ฑ๋กํ•˜๊ณ , ์ˆ˜์ • ๋ฐ ์‚ญ์ œ ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ณต๋ถ€ ๋ฐ ์‹ค์Šตํ•ด ๋ณด์•˜์–ด์š”.

์ด์ œ GraphQL Server๋‚˜, Client ๊ตฌ์ถ• ์‹œ ์–ด๋–ค ์‹์œผ๋กœ ๊ตฌ์ถ•์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฐ์ด ์žกํ˜”์–ด์š”!

์ฃผ๋‹ˆ๊ฐ€ ์ค€๋น„ํ•œ GraphQL๊ณผ Apollo ์ด์•ผ๊ธฐ๋Š” ์—ฌ๊ธฐ๊นŒ์ง€์—์š”.

ํ•จ๊ป˜ ํ•ด ์ฃผ์…”์„œ ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค.

 

 

GitHub - junyharang-coding-study/GraphQL-Study: GraphQL์„ ๊ณต๋ถ€ํ•˜๊ณ , ์‹ค์Šตํ•œ ์ฝ”๋“œ์—์š” ๐Ÿ˜€

GraphQL์„ ๊ณต๋ถ€ํ•˜๊ณ , ์‹ค์Šตํ•œ ์ฝ”๋“œ์—์š” ๐Ÿ˜€. Contribute to junyharang-coding-study/GraphQL-Study development by creating an account on GitHub.

github.com

 

 

 

์‹ค์ „! ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ๋ฆฌ์•กํŠธ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ

COUPANG

www.coupang.com


"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

 

๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

 

[๋ฌด๋ฃŒ] ์–„ํŒํ•œ GraphQL๊ณผ Apollo - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

โšก ์งง๊ณ  ๊ตต์€ ์ „์ฒด 90๋ถ„ ๊ฐ•์ขŒ! ์‚ฌ์ดํŠธ์˜ ์ฝ”๋“œ๋“ค์„ ๋ณต๋ถ™ํ•˜๋ฉฐ ๋น ๋ฅด๊ฒŒ GraphQL์„ ๋ฐฐ์šฐ๊ณ  ์•„ํด๋กœ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ์„ธ์š”., โฑ ์—ฌ๋Ÿฌ๋ถ„์˜ ์‹œ๊ฐ„์€ ์†Œ์ค‘ํ•ฉ๋‹ˆ๋‹ค. [์‚ฌ์ง„] ๐ŸŽข  GraphQL์ด ๋ญ”๊ฐ€์š”? ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”

www.inflearn.com

 

 

 

Get started with Apollo Client

Hello! ๐Ÿ‘‹ This short tutorial gets you up and running with Apollo Client. If you're using a React sandbox from CodeSandbox and you encounter a TypeError, try downgrading the version of the graphql package to 15.8.0 in the Dependencies panel. If you encou

www.apollographql.com

 

 

 

 

 

 

์นด์นด์˜คํŽ˜์ด | ๋งˆ์Œ ๋†“๊ณ  ๊ธˆ์œตํ•˜๋‹ค

์—ฌ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ๋งํฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

qr.kakaopay.com

 

 

 

728x90
๋ฐ˜์‘ํ˜•