Blue Chicken - The Legend Of Zelda
본문 바로가기

개인공부

[graphql] gpt 질의응답 및 graphql-db연동의 prisma

https://velog.io/@qkrtjdtn97/Prisma%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%98%EC%97%AC-GraphQL%EC%97%90-MySQL-DB-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0

 

Prisma를 활용하여 GraphQL에 MySQL DB 연동하기

사용 API : GraphQL사용 Database : MySQL사용 ORM : PrismaORM이 뭔지도 몰랐는데, 내가 사용하려는 GraphQL과 MySQL을 연결하려면 ORM이라는 것이 필요하다는 걸 알게되었다..무작정 시도한다고 되는게 아니었

velog.io

 

https://chatgpt.com/share/40ea640e-701b-4bbc-a92a-6adeb4fbebbc

 

ChatGPT

A conversational AI system that listens, learns, and challenges

chat.openai.com

graphql을 쓰기 위해 개발자는 스키마 정의, 리졸브 정의, 쿼리 정의 코드를 작성해야한다.


네, 맞습니다. GraphQL을 사용하기 위해 개발자는 주로 세 가지 주요 부분을 정의하고 구현해야 합니다: 스키마 정의, 리졸버 정의, 그리고 클라이언트 측 쿼리입니다. 각 부분은 GraphQL API의 구조와 기능을 정의하고, 클라이언트와 서버 간의 데이터 교환 방식을 설계하는 데 중요한 역할을 합니다. 다음은 이 세 부분에 대한 간략한 설명입니다:

### 1. 스키마 정의 (Schema Definition)
스키마는 GraphQL 서버에서 사용 가능한 데이터 타입과 그 관계를 정의합니다. 스키마는 `type`들로 구성되며, 이는 데이터의 구조와 API를 통해 수행할 수 있는 작업(쿼리와 뮤테이션)을 설명합니다. 스키마는 데이터를 요청하고 변형하는 방법을 명확하게 정의하여 API의 계약(contract) 역할을 합니다.

### 예시: 사용자 정보를 다루는 스키마
```graphql

type User {
  id: ID!
  name: String!
  email: String!
}

type Query {
  getUser(id: ID!): User
}

type Mutation {
  createUser(name: String!, email: String!): User
}


```

### 2. 리졸버 정의 (Resolver Definition)
리졸버는 스키마에 정의된 각 필드에 대한 구현 로직을 포함합니다. 쿼리 또는 뮤테이션을 수행할 때 마다 해당 필드의 리졸버 함수가 호출되어 필요한 데이터를 데이터베이스나 다른 데이터 소스에서 가져오거나, 데이터를 변형합니다. 리졸버는 실제 데이터베이스 쿼리, 외부 API 호출, 또는 다른 로직을 포함할 수 있습니다.

### 예시: `getUser` 및 `createUser` 리졸버
```javascript

const resolvers = {
  Query: {
    getUser: (parent, { id }, context) => {
      return context.db.findById(id);
    }
  },
  Mutation: {
    createUser: (parent, { name, email }, context) => {
      return context.db.createUser({ name, email });
    }
  }
};


```

### 3. 쿼리 정의 (Query Definition)
클라이언트 측에서는 필요한 데이터를 요청하는 쿼리를 작성합니다. 이 쿼리는 서버의 스키마에 따라 작성되며, 스펙에 맞게 서버로 전송됩니다. 클라이언트는 쿼리를 통해 필요한 데이터를 정확히 요청할 수 있으며, 서버는 해당 쿼리를 해석하여 요청된 데이터를 반환합니다.

### 예시: `getUser` 쿼리
```graphql

query {
  getUser(id: "123") {
    name
    email
  }
}


```

이 세 부분은 GraphQL을 통한 강력하고 유연한 API 설계의 기반을 형성하며, 클라이언트와 서버 간의 효율적인 데이터 교환을 가능하게 합니다. 개발자는 이를 통해 데이터와 애플리케이션의 요구 사항에 맞추어 맞춤형 API를 설계할 수 있습니다.

 

'개인공부' 카테고리의 다른 글

[Vue.js] 동적 클래스 바인딩  (1) 2024.05.20
[css] position 값  (0) 2024.05.20
[css,vuetify] align  (2) 2024.05.13
[css] i 태그 사용(font awesome), margin  (2) 2024.05.12
[vuetify]sizing  (1) 2024.05.07