๋ฌธ์์์ ์ด ์์ ๋ฅผ ์ฌ์ฉํ๋ฉด fetch๋ฅผ 2๋ฒ ํธ์ถํ๊ฒ ๋ฉ๋๋ค(์ฒซ ๋ฒ์งธ๋ ๊ตฌ๋ ์์, ๋ ๋ฒ์งธ๋ http ๋งํฌ์์):
http://apollo-link-docs.netlify.com/docs/link/stateless.html
const reportErrors = (errorCallback) => new ApolloLink((operation, forward) => {
const observer = forward(operation);
// errors will be sent to the errorCallback
observer.subscribe({ error: errorCallback })
return observer;
});
//...
const createLinks = () =>
ApolloLink.from([
reportErrors(console.error),
httpLink,
]);
๊ด์ฐฐ ๊ฐ๋ฅํ ์ฌ์์ ๋ฐ๋ผ ์๋ํ ๋๋ก ์๋ํฉ๋๋ค. ์์ฐ์ fn์ ์ฒซ ๋ฒ์งธ ๊ตฌ๋
ํธ์ถ์์ ํธ์ถ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ httpLink
์ ํจ๊ป ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ๋ฌด์์ธ์ง ๋ช
ํํ์ง ์์ต๋๋ค.
์์ค ์ฝ๋๋ฅผ ์กฐ๊ธ ํ๊ณ map
, reduce
๋ฑ๊ณผ ๊ฐ์ ๋ฉ์๋๊ฐ ์์ง๋ง ๊ทธ ์ค ๋๊ตฌ๋ ์ค๋ฅ ์ฝ๋ฐฑ์ ํ์ฉํ์ง ์์ต๋๋ค.
@valerybugakov ๋ apollo-error-link๋ฅผ ์ดํด๋ณด์ญ์์ค.
๋ค์๊ณผ ๊ฐ์ด httpLink๋ก ์ด๊ฒ์ ์์ฑํ์ญ์์ค.
import { ApolloClient } from 'apollo-client';
import { ApolloLink } from 'apollo-link';
import { createHttpLink } from 'apollo-link-http';
import { onError } from 'apollo-link-error';
import { InMemoryCache } from 'apollo-cache-inmemory';
const errorLink = onError(({ networkError, graphQLErrors }) => {
if (graphQLErrors) {
graphQLErrors.map(({ message, locations, path }) =>
console.log(
`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`,
),
);
}
if (networkError) console.log(`[Network error]: ${networkError}`);
});
const httpLink = createHttpLink({ ... });
const link = ApolloLink.from([
...otherLinksIfNeeded,
errorLink,
httpLink,
]);
const client = new ApolloClient({
link,
cache: new InMemoryCache(),
queryDeduplication: true,
});
@somehandle ๋ค, ์ต์
์
๋๋ค. ๋ด ์ฌ์ฉ์ ์ง์ ๋งํฌ์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํฉ๋๊น? next(operation)
๋ฐํ๋ Observable์ ๋ค๋ฅธ Observable๋ก ๋ํํ๋ ๊ฒ์ด ์ ์ผํ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค.
@valerybugakov ์ด๋ค ์ข
๋ฅ์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ถ์ต๋๊น? ๊ทธ๋ค์ Graphql ์ค๋ฅ๊ฐ ์๋ค๋ฉด, ๋น์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค .map
์ ๊ฒฐ๊ณผ์ forward(operation)
๊ฐ ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๊ธฐ ๋๋ฌธ์, ๋น์ ์ ๋ค๋ฅธ ๊ด์ฐฐ์ ์ฃผ์์ ๊ฐ์
ํ ํ์๊ฐ์๋ ๊ฒฝ์ฐ. ๋ช ๊ฐ์ง ์๋ฅผ ๋ณด๋ ค๋ฉด apollo-link-error ๋ค์ ์๋ ์ฝ๋๋ฅผ ์ดํด๋ณด์ญ์์ค!
@jbaxleyiii
๋คํธ์ํฌ ์ค๋ฅ๋ฅผ ์ก์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
400, ์๋ชป๋ ์์ฒญ์ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
@coyolero ๊ด๋ จ https://github.com/apollographql/apollo-link/issues/570
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@valerybugakov ๋ apollo-error-link๋ฅผ ์ดํด๋ณด์ญ์์ค.
๋ค์๊ณผ ๊ฐ์ด httpLink๋ก ์ด๊ฒ์ ์์ฑํ์ญ์์ค.