Backend 백엔드

[ 17 ] GRAPHQL - API 만들기

박민우_ 2024. 8. 10. 01:51

cors 설정 

restAPI 처럼 따로 미들웨어를 설정해 줄 필요 없다

const server = new ApolloServer({
    typeDefs,
    resolvers,
    cors : true  // 모든 사이트 허용
    // cors : { origin : [
    //     "http://naver.com","http://daum.net"    // 특정 사이트만 지정 허용
    // ]}
})

 

parent, args, context, info 

restAPI 는 req.body.qqq 로 요청의 body 에 접근한다. GRAPHQL 에서는 args.qqq 로 요청의 body에 접근한다

 

    Mutation : {
        createBoards : (_, args)=>{

            console.log(args.createBoardInput.writer)
            console.log(args.createBoardInput.title)
            console.log(args.createBoardInput.contents)
            

            return "게시물 등록에 성공하였습니다"
        }
    }

 

typedefs 설정하기 

const typeDefs = `#graphql

	// 클라이언트가 서버에 데이터를 전달할 때 사용하는 입력 타입을 정의하는데 사용한다.
    input CreateBoardInput {
        writer : String
        title : String
        contents : String
    }

	// 서버에서 반환할 데이터를 정의하는데 사용한다.
    type MyResult {
        number : Int
        writer : String
        title : String
        contents : String
    }



    type Query {
        fetchBoards : [MyResult] # 배열 안에 객체 1개 이상을 의미! graphql에서는 MyResult[]는 오류
    }
    
    type Mutation {
    // # 는 graphql 의 주석을 뜻한다
    // 입력값에 식별자를 넣어주는 방식을 사용하기 위해 아래와 같이 적는다 ( id 같은 고유식별자 따로 데이터 라벨링 )
    
    
    
        # createBoard(writer : String, title : String, contents : String!) : String
        createBoard(createBoardInput : CreateBoardInput!) : String
    }
`

return 과 res.send

restAPI 에서는 res.send로 요청에 대한 응답을 보낸뒤 return문 실행을 통해 함수를 종료한다.

graphql 에서는 res.send 없이 return문에 데이터를 같이 넣어서 클라이언트의 요청에 응답한다.

728x90