[typescript] 타입스크립트를 활용한 GraphQL-js 서버에서의 예외 처리 및 오류 관리 방법
GraphQL-js를 사용하여 타입스크립트로 서버를 구축할 때 예외 처리 및 오류 관리에 대한 이해가 중요합니다. 이 글에서는 GraphQL-js 서버에서 예외 처리를 하는 방법과 오류 관리를 하는 방법에 대해 알아보겠습니다.
1. 예외 처리
GraphQL-js 서버에서 예외 처리를 위해서는 GraphQLError
클래스를 활용할 수 있습니다. 이 클래스는 GraphQL 요청 중 발생한 오류를 나타냅니다.
예를 들어, 사용자가 요청한 데이터가 존재하지 않을 때 발생하는 오류를 처리하는 예제를 살펴보겠습니다.
import { GraphQLError } from 'graphql';
function resolveUser(parent, args) {
const user = getUserFromDatabase(args.id);
if (!user) {
throw new GraphQLError('사용자를 찾을 수 없습니다.', null, null, null, [args.id]);
}
return user;
}
위의 예제에서는 getUserFromDatabase
함수에서 사용자를 찾지 못했을 때 GraphQLError
를 활용하여 오류를 생성하고 있습니다. 이를 통해 클라이언트에게 명확한 오류 메시지를 전달할 수 있습니다.
2. 오류 관리
오류를 관리하기 위해서는 GraphQL 서버에서 오류를 적절히 처리하는 미들웨어를 작성해야 합니다. 이를 위해 express
와 express-graphql
을 함께 사용하는 예제를 살펴보겠습니다.
import express from 'express';
import graphqlHTTP from 'express-graphql';
import { buildSchema } from 'graphql';
const app = express();
const schema = buildSchema(`
type Query {
user(id: Int): User
}
type User {
id: Int
name: String
}
`);
const root = {
user: (args) => {
const user = getUserFromDatabase(args.id);
if (!user) {
throw new Error('사용자를 찾을 수 없습니다.');
}
return user;
},
};
app.use(
'/graphql',
graphqlHTTP({
schema,
rootValue: root,
graphiql: true,
customFormatErrorFn: (error) => ({
message: error.message,
locations: error.locations,
path: error.path,
}),
})
);
app.listen(4000, () => {
console.log('Running a GraphQL API server at http://localhost:4000/graphql');
});
위의 예제에서는 customFormatErrorFn
을 사용하여 오류가 발생했을 때 클라이언트에게 전달되는 오류 메시지를 포맷팅하고 있습니다.
결론
GraphQL-js 서버에서 예외 처리와 오류 관리는 안정적인 서비스를 제공하기 위해 매우 중요합니다. GraphQLError
클래스를 활용하여 명확한 오류 메시지를 생성하고, 오류를 적절히 관리하기 위해 미들웨어를 구성하는 것이 좋습니다.
참고 문헌: