Кеширование стало еще проще

Quell - это легкая библиотека JavaScript, предоставляющая на стороне клиента и сервера решение для кэширования GraphQL, оснащенное нормализованным кешированием.

Что такое Квелл?

GraphQL разработан, чтобы сделать API быстрыми, гибкими и удобными для разработчиков. Его даже можно развернуть в интегрированной среде разработки (IDE), известной как GraphiQL. В качестве альтернативы REST GraphQL позволяет разработчикам создавать запросы, которые извлекают данные из нескольких источников данных за один вызов API.

Quell возникает как решение для обеспечения кеширования GraphQL. Quell - это кэширующий GraphQL, создающий слой кеширования через локальный экземпляр Redis.

Мы очень рады представить вам Quell. Приступим к кешированию!

Что делает Quell?

Управляемый схемой алгоритм нормализации на уровне типов в Quell деконструирует ответы на запросы GraphQL в отдельные узлы графа, которые кэшируются отдельно как пары ключ-значение, считываемые с постоянным временем, со ссылками на подключенные узлы.

Последующие запросы GraphQL затем проверяются на соответствие кэшированному хранилищу данных, что позволяет Quell запрашивать только те данные, которые ему нужны, путем динамического переформулирования нового запроса на предмет того, чего не хватает.

Затем ответы на запросы объединяются с данными, имеющимися в кэше, и без проблем возвращается полный ответ.

Как можно использовать Quell?

Квелл / Клиент

Quell / Client - это простая в реализации библиотека JavaScript, предоставляющая решение для кэширования на стороне клиента для GraphQL. Управляемый схемой алгоритм нормализации на уровне типов Quell кэширует ответы на запросы GraphQL в виде плоских представлений ключей и значений узлов графа, что позволяет частично удовлетворять запросы из хранилища сеансов браузера, переформулировать запрос и извлекать из других API или баз данных только данные еще не кэшированы.

Пример кода запроса на выборку без Quell:

const sampleQuery = `query {
    countries {
        id
        name
        cities {
            id
            name
            population
        }
    }
}`

function fetchMe(sampleQuery) {
    let results;
    fetch('/graphQL', {
        method: "POST",
        body: JSON.stringify(sampleQuery)
    })
    .then(res => res.json())
    .then(parsedRes => {
      // use parsed results
     });

fetchMe(sampleQuery)

Метод Quell принимает четыре параметра:

  1. конечная точка - ваша конечная точка GraphQL в качестве уязвимости (например, «/ graphQL»).
  2. query - ваш запрос GraphQL в виде строки.
  3. map - объект, который сопоставляет именованные запросы с определяемыми пользователем типами GraphQL, которые они возвращают.
const sampleMap = {
  countries: 'Country',
  country: 'Country',
  citiesByCountryId: 'City',
  cities: 'City',
}

4. fieldsMap - объект, который сопоставляет поля с определяемыми пользователем типами GraphQL, которые они возвращают.

const sampleFieldsMap = {
  cities: 'City'
}

Дополнительную информацию о клиентской части Quell вы можете узнать в нашей документации.

Quell / Сервер

Quell / server - это простое в реализации промежуточное программное обеспечение Node.js / Express, которое выполняет и кэширует запросы GraphQL. Управляемый схемой алгоритм нормализации на уровне типов Quell кэширует ответы на запросы GraphQL в виде плоских представлений ключей и значений узлов графа, что позволяет частично удовлетворять запросы из кэша Redis сервера, переформулировать запрос и получать данные только из других API или баз данных. данные еще не кэшированы, вот шаги установки.

И ваш файл сервера может выглядеть так:

const express = require('express');
const myGraphQLSchema = require('./schema/schema');
const { QuellCache } = require('@quell/server')

// create a new Express server
const app = express();

// instantiate quell-server
const quellCache = new QuellCache(myGraphQLSchema, 6379, 3600);

// apply Express's JSON parser
app.use(express.json());

// GraphQL route
app.use('/graphql',
    quellCache.query,
    (req, res) => {
    return res
        .status(200)
        .send(res.locals.queryResponse);
    }
);

// expose Express server on port 3000
app.listen(3000);

Для получения дополнительной информации о Quell и рендеринге на стороне сервера, вы можете узнать больше в нашей документации.

Кеширование

GraphiQL:

Документация

Мы разместили обширную документацию на нашем сайте quellql.io. Если вы обнаружили ошибку в документации, отправьте сообщение о проблеме через GitHub.

Открытый исходный код и вклад сообщества

Quell - проект с открытым исходным кодом, разработанный в рамках технического ускорителя OS Labs. Мы приветствуем вклад и отзывы через GitHub, и если вам нравится использовать Quell или вы просто взволнованы проектом, мы ценим каждую звезду GitHub, которая встречается на нашем пути.

Команда QuellQL

Андрей Кабрера | GitHub | LinkedIn
Даша Кондратенко | GitHub | LinkedIn
Дерек Сирола | GitHub | LinkedIn
Сяо Ю Омеара | GitHub | LinkedIn

Больше контента на plainenglish.io