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

Якщо вам потрібна будь-яка підтримка або у вас виникли додаткові питання, не соромтеся зв'язатися з нами, ми готові швидко надати вам допомогу.