상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - GraphQL의 커스텀 리졸버를 만드는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
GraphQL의 커스텀 리졸버를 만드는 것은 GraphQL API의 유연성과 기능성을 확장하는 중요한 방법입니다. 리졸버는 GraphQL 쿼리에서 요청된 데이터를 가져오는 함수로, 각 필드에 대해 정의됩니다. 커스텀 리졸버를 만들면 특정 비즈니스 로직을 구현하거나, 데이터 소스에 대한 접근 방식을 조정할 수 있습니다. 아래에서는 GraphQL의 커스텀 리졸버를 만드는 방법에 대해 단계별로 설명하겠습니다. 1. GraphQL 서버 설정 먼저, GraphQL 서버를 설정해야 합니다. Node.js 환경에서 Express와 Apollo Server를 사용하는 예제를 들어 설명하겠습니다. ```bash npm install express apollo-server-express graphql ``` 이후, 기본적인 서버를 설정합니다. ```javascript const express = require('express'); const { ApolloServer, gql } = require('apollo-server-express'); // 스키마 정의 const typeDefs = gql` type Query { hello: String } `; // 기본 리졸버 const resolvers = { Query: { hello: () => 'Hello, world!', }, }; // Apollo Server <a href='https://sangseek.com/sangseeks/인스턴스 생성/ko'>인스턴스 생성</a> const server = new ApolloServer({ typeDefs, resolvers }); const app = express(); server.applyMiddleware({ app }); app.listen({ port: 4000 }, () => console.log(`🚀 Server r<a href='https://sangseek.com/sangseeks/eady/ko'>eady</a> at http://localhost:4000${server.graphqlPath}`) ); ``` 2. 커스텀 리졸버 추가 이제 커스텀 리졸버를 추가해 보겠습니다. 예를 들어, 사용자 정보를 반환하는 리졸버를 추가한다고 가정해 보겠습니다. 2.1. 스키마 수정 사용자 정보를 포함하는 새로운 타입과 쿼리를 정의합니다. ```javascript const typeDefs = gql` type User { id: ID! name: String! email: String! } type Query { hello: String user(id: ID!): User } `; ``` 2.2. <a href='https://sangseek.com/sangseeks/리졸버 구현/ko'>리졸버 구현</a> 이제 `user` 쿼리에 대한 커스텀 리졸버를 구현합니다. 예를 들어, 하드코딩된 사용자 데이터를 반환하는 리졸버를 작성할 수 있습니다. ```javascript const users = [ { id: '1', name: 'Alice', email: 'alice@example.com' }, { id: '2', name: 'Bob', email: 'bob@example.com' }, ]; const resolvers = { Query: { hello: () => 'Hello, world!', user: (_, { id }) => users.find(user => user.id === id), }, }; ``` 3. 리졸버에서 비즈니스 로직 추가 리졸버는 단순히 데이터를 반환하는 것 외에도 비즈니스 로직을 포함할 수 있습니다. 예를 들어, 데이터베이스에서 사용자 정보를 가져오는 리졸버를 작성할 수 있습니다. ```javascript const resolvers = { Query: { hello: () => 'Hello, world!', user: async (_, { id }) => { // 데이터베이스에서 사용자 정보를 가져오는 로직 const user = await getUserFrom<a href='https://sangseek.com/sangseeks/Database/ko'>Database</a>(id); return user; }, }, }; // 데이터베이스에서 사용자 정보를 가져오는 함수 (예시) async function getUserFromDatabase(id) { // 실제 데이터베이스 쿼리 로직을 여기에 작성 return users.find(user => user.id === id); } ``` 4. 에러 처리 리졸버에서 에러를 처리하는 것도 중요합니다. 예를 들어, 사용자가 존재하지 않을 경우 에러를 발생시킬 수 있습니다. ```javascript const resolvers = { Query: { hello: () => 'Hello, world!', user: async (_, { id }) => { const user = await getUserFromDatabase(id); if (!user) { <a href='https://sangseek.com/sangseeks/throw/ko'>throw</a> new Error('User not found'); } return user; }, }, }; ``` 5. 테스트 및 실행 이제 GraphQL 서버를 실행하고, GraphQL Playground 또는 Postman과 같은 도구를 사용하여 쿼리를 테스트할 수 있습니다. ```graphql query { user(id: "1") { id name email } } ``` 결론 GraphQL의 커스텀 리졸버를 만드는 과정은 스키마 정의, 리졸버 구현, 비즈니스 로직 추가, 에러 처리 등 여러 단계를 포함합니다. 이를 통해 API의 기능을 확장하고, 다양한 데이터 소스와의 통합을 쉽게 할 수 있습니다. GraphQL의 유연성을 활용하여 비즈니스 요구에 맞는 API를 설계해 보세요.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기