@joelmukuthu/apollo-multi-endpoint-link
v2.3.2
Published
Apollo link which add an api directive to fetch data from multi endpoints
Downloads
3
Readme
Apollo link which add an api directive to fetch data from multi endpoints
Why ?
We wrote an article about why and how we did this link if you want more details.
Install
npm i @habx/apollo-multi-endpoint-link
Setup
import { createHttpLink } from "apollo-link-http";
new ApolloClient({
link: ApolloLink.from([
new MultiAPILink({
endpoints: {
housings: 'https://housings.api',
projects: 'https://projects.api',
...
},
createHttpLink: () => createHttpLink(),
}),
])
})
API
new MultiAPILink(config, request)
config
| Parameter | Description | Default | Required | |----------------|-------------------------------------------------------------------------------------------------------------|----------------|----------| | endpoints | Dictionary of endpoints | | Yes | | createHttpLink | Function to generate http link like apollo-link-http | | Yes | | createWsLink | Function to generate wsLink like apollo-link-ws | | No | | wsSuffix | Suffix added to endpoint for subscriptions queries | /graphql/subscriptions | No | | httpSuffix | Suffix added to endpoint for http queries | /graphql | No | | getContext | Callback function called to set custom context like headers | | No |
Queries
query projectList @api(name: projects) {
projects {
nodes {
id
name
}
}
}
Setting custom context
Sometimes you might need to set custom apollo link context like headers
for authentication purpose.
This link allows it by doing as following.
new MultiAPILink({
getContext: (endpoint) => {
if (endpoint === 'yourendpoint-with-auth') {
return ({
headers: {
'Authorization': 'xxxx',
}
})
}
return {}
},
...
})