Рубрики
Без рубрики

Понять обмены и политики запроса URQL

URQL является гибкой альтернативой клиенту Apollo GraphQL. Tagged с JavaScript, React, Urql, GraphQL.

Посмотрите «Понимание политиков кеша и запросов документов URQL» (ресурс сообщества) на Egghead.

Когда вы настраиваете urql Клиент, клиент поставляется с обменами по умолчанию, которые проходят ваши операции.

Эти обмены [dedupexchange, cacheexchange, fetchexchange] . Порядок массива имеет значение.

const client = new Client({
  url: 'http://graphql.org/swapi-graphql/',
  exchanges: [dedupExchange, cacheExchange, fetchExchange],
})

В этом случае dedupexchange это первый обмен, который пройдет операция GraphQL. Этот обмен имеет одну задачу: удалить случайные дубликаты запросов. Если вы не управляете своими входами, пользователь может привести к тому, что многие запросы одновременно.

Следующий обмен, через который проходит операция – это Cacheexchange . Этот обмен кэширует любые успешные запросы. Это Кэш документа [01]. Этот вид кеша берет запрос, который вы написали, и переменные и хэшируют их вместе. Всякий раз, когда urql Находит операцию, проходящую через хеш, который соответствует хеш в Cacheexchange , это вернет это значение на основе requestPolicy Анкет

requestPolicy для Cacheexchange может быть 1 из 4 вещей:

  • Кэш-первый
  • только кеш
  • сеть только
  • Кэш и сеть

Кэш-первый Политика по умолчанию. Он говорит urql, что если операция перешла к Cacheexchange уже хранится, найденные данные должны быть возвращены и Операция не должна передаваться в FetchExchange . Если операция хэш не хранится в кэше, то она передана в FetchExchange

только кеш Работает так, как будто это звучит: он будет смотреть только в кэше для данных, соответствующих хэш -хешу, и не будет передавать операцию на `fetchExchange.

только сеть всегда будет пропускать кеш и передать операцию FetchExchange Анкет

Кэш и сеть Вернут любое значение в кэше и передаст операцию FetchExchange Даже если был успешный удар в кеш. FetchExchange Затем обновит кэш, когда запрос вернется.

Чтобы изменить по умолчанию requestPolicy Вы можете пройти одно из этих значений через Клиент объект конфигурации.

JS const client ({ URL: ‘http://graphql.org/swapi-graphql/’, Обмен: [dedupexchange, cacheexchange, fetchexchange], requestPolicy: «кеш-и сеть», })

Последний обмен по умолчанию, который проходит ваша операция GraphQL, – это FetchExchange . Этот обмен использует Fetch Чтобы сделать HTTP -запрос на URL, определенный на клиенте.

Другие обмены, на которые можно посмотреть на Документация Анкет

  • RetryExchange : Позволяет повторной эксплуатации
  • devtoolsexchange : Предоставляет возможность использовать Urql-Devtools
  • MultipartFetchExchange : Предоставляет возможности загрузки Multipart File
  • SusepenseExchange (Экспериментальный): Позволяет использовать RACE SUSCENCE на стороне клиента со встроенным режимом URQL
  • График кэш Cacheexchange

Оригинал: “https://dev.to/theianjones/understand-urql-s-exchanges-and-request-policies-1gop”