Apollo-link: рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рд╣рдореЗрд╢рд╛ рдЦрд╛рд▓реА рд░рд╣рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдордИ 2019  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: apollographql/apollo-link

рдореИрдВрдиреЗ рдПрдХ afterwareLink рдЬреЛрдбрд╝рд╛ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЯреЛрдХрди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

const afterwareLink = new ApolloLink((operation, forward) => {
return forward(operation).map(response => {
const context = operation.getContext();
const { response: { headers } } = context;

if (headers) {
const refreshToken = headers.get('x-refresh-token');

if (refreshToken) {
localStorage.setItem('refreshToken', refreshToken);
}
}

return response;
});
});

рдореЗрд░рд╛ рд▓рд┐рдВрдХ рдСрд░реНрдбрд░рд┐рдВрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ
рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА
let links = [elink, stateLink, setSiteIdHeaderLink, afterwareLink, httpLink]

let links = [elink, stateLink, setSiteIdHeaderLink, httpLink, afterwareLink]

рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЦрд╛рд▓реА рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ context рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
const context = operation.getContext();

Screen Shot 2019-05-18 at 3 31 44 PM
рдкреИрдХреЗрдЬ:

```
"рдЕрдкреЛрд▓реЛ-рдмреВрд╕реНрдЯ": "^0.1.22",
"рдЕрдкреЛрд▓реЛ-рдХреИрд╢-рдЗрдирдореЗрдореЛрд░реА": "^1.3.11",
"рдЕрдкреЛрд▓реЛ-рдХреИрд╢-рдкрд░реНрд╕рд┐рд╕реНрдЯ": "^0.1.1",
"рдЕрдкреЛрд▓реЛ-рдХреНрд▓рд╛рдЗрдВрдЯ": "^2.4.7",
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ": "^ 1.2.3",
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рдмреИрдЪ-http": "^ 1.2.8",
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-http": "^1.5.9",
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рдкреБрди: рдкреНрд░рдпрд╛рд╕": "^ 2.2.5",
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд╕реНрдХреАрдорд╛": "^ 1.1.1",
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рдЯреЛрдХрди-рд░рд┐рдлреНрд░реЗрд╢": "^0.2.3",
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рдбрдмреНрд▓реНрдпреВрдПрд╕": "^ 1.0.9",

I tried to use custom-fetch method event that didn't worked

рдХреЙрдиреНрд╕реНрдЯ рдХрд╕реНрдЯрдордлрдЪ = (рдпреВрд░реА, рд╡рд┐рдХрд▓реНрдк) => {
рд╡рд╛рджрд╛ рдХрд░рдиреЗ рджреЛ = рд▓рд╛рдиреЗ (рдпреВрд░реА, рд╡рд┐рдХрд▓реНрдк)
рд╡рд╛рдпрджрд╛
рддрдм (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => {
рд░рд┐рдлреНрд░реЗрд╢ рд╣реЛрдиреЗ рджреЗрдВрдЯреЛрдХрди = response.headers.get('token-x')
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рд░реАрдлреНрд░реЗрд╢рдЯреЛрдХрди)
рдЕрдЧрд░ (рддрд╛рдЬрд╝рд╛ рдЯреЛрдХрди) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рд░реАрдлреНрд░реЗрд╢рдЯреЛрдХрди)
}
рд╡рд╛рдкрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
})
рдХреИрдЪ (рдИ => {
рдИ рдлреЗрдВрдХреЛ
})
рд╡рд╛рдкрд╕реА рдХрд╛ рд╡рд╛рджрд╛
}
рдХреЙрдиреНрд╕реНрдЯ httpLink = рдорд┐рдбрд▓рд╡реЗрдпрд░рд▓рд┐рдВрдХ.рдХреЙрдирдХреИрдЯ (рдХреНрд░рд┐рдПрдЯ рдПрдЪрдЯреАрдкреА рд▓рд┐рдВрдХ ({рдпреВрд░реА: рдПрдкреАрдЖрдИ_рдпреВрдЖрд░рдПрд▓, рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓: 'рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ', рдСрдкреНрдЯреНрд╕: {
рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓: 'рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ'
}, рдлрд╝реЗрдЪ: рдХрд╕реНрдЯрдордлрд╝реЗрдЪ}));
```

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкреЛрд▓реЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП

````рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
"рдЕрдкреЛрд▓реЛ-рдХреИрд╢-рдЗрдирдореЗрдореЛрд░реА" рд╕реЗ {InMemoryCache} рдЖрдпрд╛рдд рдХрд░реЗрдВ
"рдЕрдкреЛрд▓реЛ-рдХреНрд▓рд╛рдЗрдВрдЯ" рд╕реЗ {рдЕрдкреЛрд▓реЛ рдХреНрд▓рд╛рдЗрдВрдЯ} рдЖрдпрд╛рдд рдХрд░реЗрдВ
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ" рд╕реЗ {рдЕрдкреЛрд▓реЛрд▓рд┐рдВрдХ} рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдпрд╛рдд { HttpLink } "рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-http" рд╕реЗ
"рдиреЛрдб-рдлрд╝реЗрдЪ" рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ

рдХреЙрдиреНрд╕реНрдЯ рдЖрдлреНрдЯрд░рд╡реЗрдпрд░рд▓рд┐рдВрдХ = рдирдпрд╛ рдЕрдкреЛрд▓реЛрд▓рд┐рдВрдХ ((рдСрдкрд░реЗрд╢рди, рдлреЙрд░рд╡рд░реНрдб) =>
рдлреЙрд░рд╡рд░реНрдб (рдСрдкрд░реЗрд╢рди)ред рдирдХреНрд╢рд╛ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => {
рдХреЙрдиреНрд╕реНрдЯ рд╕рдВрджрд░реНрдн = рдСрдкрд░реЗрд╢рдиред getContext ()
рдХрд╛рд╕реНрдЯ {
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: {рд╣реЗрдбрд░},
} = рдкреНрд░рд╕рдВрдЧ

    console.log(headers) 

    return response
})

)
const myfetch = рдХрд┐рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ // рдЗрд╕ рд╣реИрдХ рдХреЛ рдЕрдкреЛрд▓реЛ-рдмреВрд╕реНрдЯ рдХреЗ рд╕рд╛рде рджреБрдЦ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ
рдХреЙрдиреНрд╕реНрдЯ httpLink = рдирдпрд╛ HttpLink ({рдпреВрд░реА: "http://localhost: 4000/graphql", рдлрд╝реЗрдЪ: myfetch})

рдХреЙрдиреНрд╕реНрдЯ рд▓рд┐рдВрдХ = [рдЖрдлреНрдЯрд░рд╡реЗрдпрд░рд▓рд┐рдВрдХ, httpLink]
рдХреЙрдиреНрд╕реНрдЯ рд▓рд┐рдВрдХ = рдЕрдкреЛрд▓реЛрд▓рд┐рдВрдХред рд╕реЗ (рд▓рд┐рдВрдХ)
рдХреЙрдиреНрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ = рдирдпрд╛ рдЕрдкреЛрд▓реЛ рдХреНрд▓рд╛рдЗрдВрдЯ ({рд▓рд┐рдВрдХ, рдХреИрд╢: рдирдпрд╛ рдЗрдирдореЗрдорд░реА рдХреИрд╢ ()})

````

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓рд╛? рдореИрдВ рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ devtools рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд┐рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреЛ рдореИрдВ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдЕрдВрддрддрдГ рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ response.headers рдХреЗрд╡реЗрдпрд░ рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА Headers рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкреЛрд▓реЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдП

````рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
"рдЕрдкреЛрд▓реЛ-рдХреИрд╢-рдЗрдирдореЗрдореЛрд░реА" рд╕реЗ {InMemoryCache} рдЖрдпрд╛рдд рдХрд░реЗрдВ
"рдЕрдкреЛрд▓реЛ-рдХреНрд▓рд╛рдЗрдВрдЯ" рд╕реЗ {рдЕрдкреЛрд▓реЛ рдХреНрд▓рд╛рдЗрдВрдЯ} рдЖрдпрд╛рдд рдХрд░реЗрдВ
"рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ" рд╕реЗ {рдЕрдкреЛрд▓реЛрд▓рд┐рдВрдХ} рдЖрдпрд╛рдд рдХрд░реЗрдВ
рдЖрдпрд╛рдд { HttpLink } "рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-http" рд╕реЗ
"рдиреЛрдб-рдлрд╝реЗрдЪ" рд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ

рдХреЙрдиреНрд╕реНрдЯ рдЖрдлреНрдЯрд░рд╡реЗрдпрд░рд▓рд┐рдВрдХ = рдирдпрд╛ рдЕрдкреЛрд▓реЛрд▓рд┐рдВрдХ ((рдСрдкрд░реЗрд╢рди, рдлреЙрд░рд╡рд░реНрдб) =>
рдлреЙрд░рд╡рд░реНрдб (рдСрдкрд░реЗрд╢рди)ред рдирдХреНрд╢рд╛ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ => {
рдХреЙрдиреНрд╕реНрдЯ рд╕рдВрджрд░реНрдн = рдСрдкрд░реЗрд╢рдиред getContext ()
рдХрд╛рд╕реНрдЯ {
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: {рд╣реЗрдбрд░},
} = рдкреНрд░рд╕рдВрдЧ

    console.log(headers) 

    return response
})

)
const myfetch = рдХрд┐рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ // рдЗрд╕ рд╣реИрдХ рдХреЛ рдЕрдкреЛрд▓реЛ-рдмреВрд╕реНрдЯ рдХреЗ рд╕рд╛рде рджреБрдЦ рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ
рдХреЙрдиреНрд╕реНрдЯ httpLink = рдирдпрд╛ HttpLink ({рдпреВрд░реА: "http://localhost: 4000/graphql", рдлрд╝реЗрдЪ: myfetch})

рдХреЙрдиреНрд╕реНрдЯ рд▓рд┐рдВрдХ = [рдЖрдлреНрдЯрд░рд╡реЗрдпрд░рд▓рд┐рдВрдХ, httpLink]
рдХреЙрдиреНрд╕реНрдЯ рд▓рд┐рдВрдХ = рдЕрдкреЛрд▓реЛрд▓рд┐рдВрдХред рд╕реЗ (рд▓рд┐рдВрдХ)
рдХреЙрдиреНрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ = рдирдпрд╛ рдЕрдкреЛрд▓реЛ рдХреНрд▓рд╛рдЗрдВрдЯ ({рд▓рд┐рдВрдХ, рдХреИрд╢: рдирдпрд╛ рдЗрдирдореЗрдорд░реА рдХреИрд╢ ()})

````

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЙрддреНрддрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рд╣реИ: https://stackoverflow.com/questions/47443858/apolo-link-response-headers/58986484#58986484

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

valerybugakov picture valerybugakov  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vjpr picture vjpr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bwhitty picture bwhitty  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sandersn picture sandersn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

roupen picture roupen  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ