Apollo Link
- Apollo Client에서 GraphQL 요청을 전송하고 응답을 처리하는 과정을 확장하거나 수정할 수 있는 유연한 미들웨어 시스템이다.
- 링크 체인을 구성하여 다양한 기능을 수행할 수 있다.
- 요청 수정
- 각 요청에 대해 헤더나 인증 토큰 등을 추가하거나, 변형할 수 있다.
- 각 요청에 대해 헤더나 인증 토큰 등을 추가하거나, 변형할 수 있다.
- 에러 처리
- 요청 중에 발생하는 에러를 처리하거나, 재시도 로직을 구현할 수 있다.
- 요청 중에 발생하는 에러를 처리하거나, 재시도 로직을 구현할 수 있다.
- 캐시 관리
- 캐시를 관리하거나 요청을 캐시를 사용해 최적화할 수 있다.
- 캐시를 관리하거나 요청을 캐시를 사용해 최적화할 수 있다.
- 네트워크 요청
- HTTP를 통해 요청을 보내거나 WebSocket을 사용하여 실시간 통신을 할 수 있다.
- HTTP를 통해 요청을 보내거나 WebSocket을 사용하여 실시간 통신을 할 수 있다.
Apollo Link는 여러 개의 링크를 체인으로 연결하여 각 단계마다 처리 로직을 추가할 수 있다.
- HttpLink는 기본적으로 HTTP 요청을 보내는 역할을 하고,
- ErrorLink는 에러를 처리하며,
- RetryLink는 네트워크 요청을 재시도하게 하는 등의 역할을 수행한다.
import { ApolloClient, InMemoryCache, ApolloLink, HttpLink } from '@apollo/client';
import { onError } from '@apollo/client/link/error';
// ErrorLink 설정
const errorLink = onError(({ graphQLErrors, networkError }) => {
if (graphQLErrors) {
graphQLErrors.forEach(({ message, locations, path }) =>
console.log(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`)
);
}
if (networkError) console.log(`[Network error]: ${networkError}`);
});
// HttpLink 설정
const httpLink = new HttpLink({ uri: '<https://example.com/graphql>' });
// 링크 체인 설정
const link = ApolloLink.from([errorLink, httpLink]);
// Apollo Client 생성
const client = new ApolloClient({
link,
cache: new InMemoryCache(),
});
이렇게 Apollo Link를 사용하면 요청 흐름을 세분화하고, 커스터마이징 할 수 있다.
'Frontend > Apollo' 카테고리의 다른 글
useLazyQuery, GraphQL 쿼리를 즉시 실행하지 않고 필요할 때 호출 (0) | 2024.10.15 |
---|---|
GraphQL 서버와 통신하지 않고 Apollo Client 캐시에서 직접 데이터를 읽고 쓰기 (0) | 2024.10.01 |
Apollo Client 캐시 동작과 관리 방법 (0) | 2024.09.29 |
GraphQL Code Generator, 타입스크립트 정의 자동 생성 (0) | 2024.09.10 |
[Apollo v.3] Reactive variables (0) | 2024.09.06 |