рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ 2 рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ (рдкрд╣рд▓рд╛ рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдкрд░ рдФрд░ рджреВрд╕рд░рд╛ http рд▓рд┐рдВрдХ рдореЗрдВ):
http://apolo-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 рдЕрдкреЛрд▓реЛ-рддреНрд░реБрдЯрд┐-рд▓рд┐рдВрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ
рдЗрд╕реЗ рдЕрдкрдиреЗ 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)
рджреНрд╡рд╛рд░рд╛ рджреВрд╕рд░реЗ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПред
@valerybugakov рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрджрд┐ рд╡реЗ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рддреЛ рдЖрдк .map
рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ forward(operation)
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдиреНрдп рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рддреНрд░реБрдЯрд┐ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ!
@jbaxleyiii
рдЕрдЧрд░ рдореИрдВ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдЖрдЗрдП 400, рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз рдХрд╣реЗрдВред
@coyolero рд╕рдВрдмрдВрдзрд┐рдд https://github.com/apollographql/apollo-link/issues/570
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@valerybugakov рдЕрдкреЛрд▓реЛ-рддреНрд░реБрдЯрд┐-рд▓рд┐рдВрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ
рдЗрд╕реЗ рдЕрдкрдиреЗ httpLink рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ: