GraphQL API
Практическое руководство для тестировщиков
Откройте для себя мощь GraphQL API и узнайте, как эффективно его тестировать
Практическое руководство для тестировщиков
Откройте для себя мощь GraphQL API и узнайте, как эффективно его тестировать

– это язык запросов и среда выполнения для API, позволяющая клиентам запрашивать только необходимые данные. Он предоставляет единую точку доступа к данным, позволяя клиентам получать именно то, что им нужно, без избыточности.
– это архитектурный стиль для веб-сервисов, который использует HTTP-методы (GET, POST, PUT, DELETE) для взаимодействия с ресурсами. REST-API часто возвращают фиксированные структуры данных, которые могут содержать ненужную информацию.
запросы, мутации, типы данных
- это отправляемые клиентом инструкции для получения данных от GraphQL API. Они определяют, какие данные нужно получить, используя язык GraphQL.
- это операции, которые изменяют данные в GraphQL API. Они используются для создания, обновления или удаления данных.
Типы данных определяют структуру данных в GraphQL API. Они могут быть скалярными (например, строка, число) или сложными (объекты, списки).
Существует множество инструментов для работы с GraphQL API, таких как GraphiQL, Insomnia, Postman.
Установим выбранный инструмент. Инструкции по установке будет ниже.
Настроим инструмент, указав URL-адрес GraphQL-сервера.
Напишем тестовый запрос, чтобы убедиться, что инструмент настроен правильно и может успешно взаимодействовать с GraphQL API.
Фрагменты - это части GraphQL-запросов, которые можно повторно использовать в других запросах.
Переменные позволяют динамически передавать значения в запросы, что делает их более гибкими.
Использование фрагментов и переменных делает запросы более читаемыми, структурированными и удобными для повторного использования.
Мутации - это операции, которые изменяют данные в GraphQL API. Их можно использовать для создания, обновления или удаления данных.
При выполнении мутации необходимо передать необходимые аргументы, определяющие, какие данные должны быть изменены.
После успешного выполнения мутации GraphQL API возвращает информацию об изменении данных.
Проверка взаимодействия между GraphQL API и другими компонентами системы, такими как базы данных или внешние сервисы.
Проверка корректности работы GraphQL API, его способности выполнять запросы и возвращать ожидаемые результаты.
Проверка способности GraphQL API обрабатывать большие объемы запросов и выдерживать пиковые нагрузки.
Documentation- List of Posts
context | Scope under which the request is made; determines fields present in response. Default: view One of: view, embed, edit |
page | Current page of the collection. Default: 1 |
per_page | Maximum number of items to be returned in result set. Default: 10 |
search | Limit results to those matching a string. |
after | Limit response to posts published after a given ISO8601 compliant date. |
modified_after | Limit response to posts modified after a given ISO8601 compliant date. |
author | Limit result set to posts assigned to specific authors. |
author_exclude | Ensure result set excludes posts assigned to specific authors. |
before | Limit response to posts published before a given ISO8601 compliant date. |
modified_before | Limit response to posts modified before a given ISO8601 compliant date. |
exclude | Ensure result set excludes specific IDs. |
include | Limit result set to specific IDs. |
offset | Offset the result set by a specific number of items. |
order | Order sort attribute ascending or descending. Default: desc One of: asc, desc |
orderby | Sort collection by post attribute. Default: date One of: author, date, id, include, modified, parent, relevance, slug, include_slugs, title |
search_columns | Array of column names to be searched. |
slug | Limit result set to posts with one or more specific slugs. |
status | Limit result set to posts assigned one or more statuses. Default: publish |
tax_relation | Limit result set based on relationship between multiple taxonomies. One of: AND, OR |
categories | Limit result set to items with specific terms assigned in the categories taxonomy. |
categories_exclude | Limit result set to items except those with specific terms assigned in the categories taxonomy. |
tags | Limit result set to items with specific terms assigned in the tags taxonomy. |
tags_exclude | Limit result set to items except those with specific terms assigned in the tags taxonomy. |
sticky | Limit result set to items that are sticky. |
Это руководство поможет вам настроить проект для работы с WordPress GraphQL API используя Apollo Client. Вы научитесь отправлять запросы к API и обрабатывать полученные данные.
Создайте новую директорию graphql-project и перейдите в неё
В VS Code откройте новый терминал (Terminal -> New Terminal) и выполните:
npm init -y
Появится новый файл package.json в корне проекта и вставьте следующее содержимое:
{
“name”: “graphql-project”,
“version”: “1.0.0”,
“type”: “module”,
“main”: “index.js”,
“scripts”: {
“start”: “node index.js”
},
“dependencies”: {
“@apollo/client”: “^3.11.5”,
“cross-fetch”: “^3.1.8”,
“graphql”: “^16.9.0”
}
}
В терминале VS Code установите зависимости, выполнив команду:
npm install
index.js в корне проекта.index.js:import pkg from ‘@apollo/client’;
const { ApolloClient, InMemoryCache, gql } = pkg;
import fetch from ‘cross-fetch’;
// Создаем экземпляр Apollo Client
const client = new ApolloClient({
uri: ‘http://dev.emeli.in.ua/graphql’, // URL нашего GraphQL API
cache: new InMemoryCache(),
fetch: fetch
});
// Определяем GraphQL запрос
const GET_POSTS = gql`
query GetPosts {
posts {
nodes {
id
title
date
}
}
}
`;
// Функция для выполнения запроса
async function fetchPosts() {
try {
const { data } = await client.query({
query: GET_POSTS
});
console.log(‘Posts:’, data.posts.nodes);
} catch (error) {
console.error(‘Error fetching posts:’, error);
}
}
// Вызываем функцию
fetchPosts();
В терминале VS Code выполните команду:
npm start
Результаты запроса будут выведены в терминал VS Code.
Если у тебя ещё нет Postman, скачай и установи его с официального сайта: https://www.postman.com/downloads/
Создай новый запрос:
Укажи URL для API:
http://dev.emeli.in.ua/graphqlПерейди на вкладку GraphQL:
Вставь запрос:
query GetPosts {
posts {
nodes {
id
title
date
}
}
}
Этот запрос делает следующее:
Тип запроса: query GetPosts
Структура ответа:
nodes) возвращаются три поля:id: уникальный идентификатор поста.title: заголовок поста.date: дата публикации поста.id, title и date.Этот запрос возвращает список категорий для постов, если такие есть.
query GetCategories {
categories {
nodes {
id
name
slug
}
}
}
Пояснение: Этот запрос вернёт категории с их ID, именем и slug (уникальная строка для URL).
query GetComments {
comments {
nodes {
id
content
author {
node {
name
}
}query GetRecentPosts {
posts(first: 5, where: {orderby: {field: DATE, order: DESC}}) {
nodes {
id
title
date
}
}
}Задание 1: Получение постов по автору
Цель: Написать запрос для получения постов определённого автора.
Инструкции:
POST и введите URL: http://dev.emeli.in.ua/graphql.Задание 2: Исключение постов определённого автора
Цель: Написать запрос, который исключает посты, написанные конкретным автором.
Инструкции:
POST и введите URL: http://dev.emeli.in.ua/graphql.Задание 3: Фильтрация по дате публикации
Цель: Написать запрос для получения постов, опубликованных после определённой даты.
Инструкции:
POST и введите URL: http://dev.emeli.in.ua/graphql.Задание 4: Ограничение результатов и пагинация
Цель: Написать запрос с ограничением количества возвращаемых постов.
Инструкции:
POST и введите URL: http://dev.emeli.in.ua/graphql.Задание 5: Поиск по заголовкам постов
Цель: Написать запрос для поиска постов по заголовкам.
Инструкции:
POST и введите URL: http://dev.emeli.in.ua/graphql.В рамках практикума вы получите:
Формат занятий:
Онлайн: Все занятия проходят вживую через Skype.

Если вам требуется какая-либо поддержка или у вас возникли дополнительные вопросы, не стесняйтесь связаться с нами – мы готовы быстро оказать вам помощь.
Мы также присутствуем в социальных сетях! Подписывайтесь на нас и получайте последние новости, акции, скидки, бесплатные тренинги и участие в марафонах.
Будем рады видеть вас в нашем сообществе!
Публичная оферта. Авторское право © 2024 Школа подготовки тестировщиков