Есть ли способ изменить конечную точку Apollo после создания клиента Apollo? Я хотел бы, чтобы пользователь ввел свою конечную точку.
Изменить конечную точку Apollo в провайдере Apollo
Ответы (2)
httpEndpoint
может быть функцией, и она вызывается при каждом запросе.
Как уже упоминалось @ wrod7, вы можете использовать localStorage, но глобальной переменной должно быть достаточно.
// vue-apollo.js
export { defaultOptions }
// main.js
import { createProvider, defaultOptions } from './vue-apollo'
window.apolloEndpoint = defaultOptions.httpEndpoint
new Vue({
router,
apolloProvider: createProvider({
cache,
httpEndpoint: () => window.apolloEndpoint,
}),
render: h => h(App),
}).$mount('#app')
и вы можете установить apolloEndpoint
где угодно, я использую window.
, чтобы осчастливить eslint
httpEndpoint вызывается с текущим запросом, поэтому вы можете условно вернуть конечную точку на основе operationName
vue-apollo получил поддержку нескольких клиентов, это может быть полезно, если вы хотите переопределить конечную точку только для некоторых запросов, но я думаю, что это оффтоп
Я делаю это в одном из своих приложений. Я храню строку URL в локальном хранилище или в асинхронном хранилище на мобильном устройстве. вы можете проверить строку при загрузке приложения и попросить пользователя ввести ее, если строка URL-адреса не сохранена. приложение должно будет обновиться после ввода URL-адреса и сохранения его в локальном хранилище.