graphQL

김부릉·2023년 2월 12일
0
  1. ApollerServer 생성

  2. 스키마 작성
    error message : Apollo Server requires either an existing schema, modules or typeDefs

  • Scalar type : graphQL에서 제공하는 기본 타입
    ID, String, Int, Boolean 등
const typeDefs = gql`
type User {
    id: ID
    username: String
}
  type Tweet {
    id: ID
    text: String
    author: User
  }
  type Query {
    allTweets: [Tweet]
    tweet(id: ID): Tweet
  }
`;
  • 스키마 해석
    Tweet는 하나의 User를 갖는다
    allTweets 는 모든 Tweet를 갖는다.
    tweet(id: ID): Tweet id를 아규먼트로 받는다
  1. mutation
 type Mutation {
    postTweet(text: String, userId: ID): Tweet
  }  

database를 변경하고 싶을 때 type Mutation{} 을 만들어줘야 한다.
restAPI 에서 POST, DELETE, PUT 은 모두 Mutation에 있어야 한다.

  1. ! 사용법
  • 타입 이름만 써주면 Nallable field가 된다.
    type Query {
       allTweets: [Tweet]
       tweet(id: ID!): Tweet!
     }
  • 아규먼트의 아이디를 반드시 입력하고, 쿼리는 반드시 하나의 Tweet를 리턴한다.
  1. resolver 객체 사용하기
const resolvers = {
  Query: {
    allTweets() {
      return tweets;
    },
    tweet(root, args) {
      console.log(args);
      return null;
    },
  },
};

const server = new ApolloServer({ typeDefs, resolvers });
  • graphql의 명세
    함수 안의 아규먼트 첫번째는 root, 두번째는 Query or mutation 의 아규먼트를 받는다.

0개의 댓글