15%

Π—Π°ΠΎΡ‰Π°Π΄ΠΆΡƒΠΉΡ‚Π΅ 15% Π½Π° всіх послугах хостингу

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ свої Π½Π°Π²ΠΈΡ‡ΠΊΠΈ Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°ΠΉΡ‚Π΅ Π—Π½ΠΈΠΆΠΊΡƒ Π½Π° Π±ΡƒΠ΄ΡŒ-який Ρ‚Π°Ρ€ΠΈΡ„Π½ΠΈΠΉ ΠΏΠ»Π°Π½

Використовуй ΠΊΠΎΠ΄:

Skills
ΠŸΠΎΡ‡Π°Ρ‚ΠΈ
21.11.2024

ΠŸΠΎΡΡ–Π±Π½ΠΈΠΊ Π· GraphQL

GraphQL Π½Π° AlexHost: ВикористовуйтС свої API Π· Ρ‚ΠΎΡ‡Π½Ρ–ΡΡ‚ΡŽ

Π§ΠΎΠΌΡƒ GraphQL Π½Π° Π²ΠΈΠ΄Ρ–Π»Π΅Π½ΠΎΠΌΡƒ сСрвСрі? GraphQL – Ρ†Π΅ Π½Π°ΠΉΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ–ΡˆΠΈΠΉ API, який дозволяє Π²Π°ΠΌ ΠΎΡ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ Ρ‚Ρ–Π»ΡŒΠΊΠΈ Ρ‚Ρ– Π΄Π°Π½Ρ–, які Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ– – Π±Π΅Π· Π·Π°ΠΉΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΎΠΏΠΎΡ‚Ρƒ Ρ‚Π° ΠΌΠ΅Ρ‚ΡƒΡˆΠ½Ρ–. Π£ ΠΏΠΎΡ”Π΄Π½Π°Π½Π½Ρ– Π· Π²ΠΈΠ΄Ρ–Π»Π΅Π½ΠΈΠΌΠΈ сСрвСрами AlexHost Π²ΠΈ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ”Ρ‚Π΅ блискавичну ΡˆΠ²ΠΈΠ΄ΠΊΡ–ΡΡ‚ΡŒ, ΠΏΠΎΠ²Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ– Π·Π°Π»Ρ–Π·Π½Ρƒ Π±Π΅Π·ΠΏΠ΅ΠΊΡƒ для виконання складних Π·Π°ΠΏΠΈΡ‚Ρ–Π² Π°Π±ΠΎ Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡ–Π² Ρƒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ часі, як Ρ‡Π΅ΠΌΠΏΡ–ΠΎΠ½. ΠΠ°Ρ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΡΡŒ Ρƒ Facebook Ρƒ 2012 Ρ€ΠΎΡ†Ρ– Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π²ΡˆΠΈ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΠΉ Π²ΠΈΡ…Ρ–Π΄Π½ΠΈΠΉ ΠΊΠΎΠ΄ Ρƒ 2015 Ρ€ΠΎΡ†Ρ–, GraphQL Π·Π°Ρ‚ΡŒΠΌΠ°Ρ€ΡŽΡ” REST ΡΠ²ΠΎΡ”ΡŽ Π³Π½ΡƒΡ‡ΠΊΡ–ΡΡ‚ΡŽ Ρ‚Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŽ. Π”Π°Π²Π°ΠΉΡ‚Π΅ зануримося Π² Ρ‚Π΅, Ρ‰ΠΎ Π·ΠΌΡƒΡˆΡƒΡ” ΠΉΠΎΠ³ΠΎ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ Ρ– як ΠΉΠΎΠ³ΠΎ використовувати.

1. Розуміння GraphQL

GraphQL дозволяє ΠΊΠ»Ρ–Ρ”Π½Ρ‚Π°ΠΌ Π·Π°ΠΏΠΈΡ‚ΡƒΠ²Π°Ρ‚ΠΈ Ρ‚Ρ–Π»ΡŒΠΊΠΈ Ρ‚Ρ– Π΄Π°Π½Ρ–, які Ρ—ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ–, Ρ‰ΠΎ Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ ΠΉΠΎΠ³ΠΎ Π±Ρ–Π»ΡŒΡˆ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈΠΌ, Π½Ρ–ΠΆ Ρ‚Ρ€Π°Π΄ΠΈΡ†Ρ–ΠΉΠ½Ρ– REST API, які часто ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°ΡŽΡ‚ΡŒ фіксовану структуру Π΄Π°Π½ΠΈΡ…. Π’Π°ΠΊΠ° Π³Π½ΡƒΡ‡ΠΊΡ–ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎ підвищСння продуктивності, особливо Π² ΠΌΠΎΠ±Ρ–Π»ΡŒΠ½ΠΈΡ… Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠ°Ρ…, Π΄Π΅ пропускна Π·Π΄Π°Ρ‚Π½Ρ–ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ ΠΎΠ±ΠΌΠ΅ΠΆΠ΅Π½Π°.

2. ΠšΠ»ΡŽΡ‡ΠΎΠ²Ρ– особливості GraphQL

2.1. Π’ΠΎΡ‡Π½Π° Π²ΠΈΠ±Ρ–Ρ€ΠΊΠ° Π΄Π°Π½ΠΈΡ…

Завдяки GraphQL ΠΊΠ»Ρ–Ρ”Π½Ρ‚ΠΈ Π²ΠΊΠ°Π·ΡƒΡŽΡ‚ΡŒ свої Π²ΠΈΠΌΠΎΠ³ΠΈ Π΄ΠΎ Π΄Π°Π½ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎΠΌΡƒ Π·Π°ΠΏΠΈΡ‚Ρ–. Π—Π°ΠΌΡ–ΡΡ‚ΡŒ ΠΊΡ–Π»ΡŒΠΊΠΎΡ… ΠΊΡ–Π½Ρ†Π΅Π²ΠΈΡ… Ρ‚ΠΎΡ‡ΠΎΠΊ для Ρ€Ρ–Π·Π½ΠΈΡ… рСсурсів, GraphQL Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΡƒΡ” Ρ”Π΄ΠΈΠ½Ρƒ ΠΊΡ–Π½Ρ†Π΅Π²Ρƒ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π΄Π΅ ΠΊΠ»Ρ–Ρ”Π½Ρ‚ΠΈ ΠΌΠΎΠΆΡƒΡ‚ΡŒ Π·Π°ΠΏΠΈΡ‚ΡƒΠ²Π°Ρ‚ΠΈ Ρ‚ΠΎΡ‡Π½Ρƒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ– ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π΄Π°Π½ΠΈΡ…, які Ρ—ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ–.

2.2. Бильно Ρ‚ΠΈΠΏΡ–Π·ΠΎΠ²Π°Π½Π° схСма

API-інтСрфСйси GraphQL Π²ΠΈΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡŒΡΡ ΡΡ…Π΅ΠΌΠΎΡŽ, яка ΠΎΠΊΡ€Π΅ΡΠ»ΡŽΡ” Ρ‚ΠΈΠΏΠΈ доступних Π΄Π°Π½ΠΈΡ… Ρ‚Π° Ρ—Ρ… Π²Π·Π°Ρ”ΠΌΠΎΠ·Π²’язки. Ця схСма Π΄Ρ–Ρ” як ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΌΡ–ΠΆ ΠΊΠ»Ρ–Ρ”Π½Ρ‚ΠΎΠΌ Ρ– сСрвСром, Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΡƒΡŽΡ‡ΠΈ ΡƒΠ·Π³ΠΎΠ΄ΠΆΠ΅Π½Ρ–ΡΡ‚ΡŒ Π΄Π°Π½ΠΈΡ… Ρ– Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‡ΠΈ Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΠ°ΠΌ Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ, як взаємодіяти Π· API.

2.3. ОновлСння Π² Ρ€Π΅ΠΆΠΈΠΌΡ– Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ часу

GraphQL ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” підписки, Ρ‰ΠΎ дозволяє ΠΊΠ»Ρ–Ρ”Π½Ρ‚Π°ΠΌ ΠΎΡ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ оновлСння Π² Ρ€Π΅ΠΆΠΈΠΌΡ– Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ часу. Π¦Π΅ особливо корисно для Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡ–Π², які ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡŒ Π΄Π°Π½ΠΈΡ… Ρƒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ часі, Ρ‚Π°ΠΊΠΈΡ… як Ρ‡Π°Ρ‚-Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΈ Π°Π±ΠΎ оновлСння Π±Ρ–Ρ€ΠΆΠΎΠ²ΠΈΡ… ΠΊΠΎΡ‚ΠΈΡ€ΡƒΠ²Π°Π½ΡŒ.

2.4. Π‘Π°ΠΌΠΎΠ°Π½Π°Π»Ρ–Π·

API GraphQL ΠΌΠΎΠΆΠ½Π° Π°Π½Π°Π»Ρ–Π·ΡƒΠ²Π°Ρ‚ΠΈ, Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‡ΠΈ ΠΊΠ»Ρ–Ρ”Π½Ρ‚Π°ΠΌ Π·Π°ΠΏΠΈΡ‚ΡƒΠ²Π°Ρ‚ΠΈ саму схСму. Π¦Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Ρ”, Ρ‰ΠΎ ΠΌΠΎΠΆΠ½Π° ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ інструмСнти для вивчСння API Ρ– розуміння доступних Ρ‚ΠΈΠΏΡ–Π², Π·Π°ΠΏΠΈΡ‚Ρ–Π² Ρ– ΠΌΡƒΡ‚Π°Ρ†Ρ–ΠΉ, ΠΏΠΎΠΊΡ€Π°Ρ‰ΡƒΡŽΡ‡ΠΈ досвід Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΡ–Π².

3. ΠŸΠΎΡ‡Π°Ρ‚ΠΎΠΊ Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π· GraphQL

ΠšΡ€ΠΎΠΊ 1: ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ сСрвСра GraphQL

Π©ΠΎΠ± ΠΏΠΎΡ‡Π°Ρ‚ΠΈ використовувати GraphQL, Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π½Π°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Ρ‚ΠΈ сСрвСр GraphQL. Π¦Π΅ ΠΌΠΎΠΆΠ½Π° Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π·Π° допомогою Ρ€Ρ–Π·Π½ΠΈΡ… ΠΌΠΎΠ² програмування Ρ‚Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡ–Π². Наприклад:

  • Node.js: ВикористовуйтС Apollo Server Π°Π±ΠΎ Express-GraphQL.
  • Python: ВикористовуйтС Graphene.
  • Java: ВикористовуйтС Spring Boot Π· GraphQL.

Ось ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Π½Π°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ простого сСрвСра GraphQL Π· Node.js Ρ‚Π° Apollo Server:

const { ApolloServer, gql } = require('apollo-server');
// Define your type definitions
const typeDefs = gql`
type Query {
hello: String
}`;
// Define your resolvers
const resolvers = {
Query: {
hello: () => 'Hello, world!',
},
};
// Create the server
const server = new ApolloServer({ typeDefs, resolvers });
// Start the server
server.listen().then(({ url }) => {
console.log(`πŸš€ Server ready at ${url}`);
});

ΠšΡ€ΠΎΠΊ 2: Π’ΠΈΠ·Π½Π°Ρ‡Ρ‚Π΅ Π²Π°ΡˆΡƒ схСму

Π‘Ρ‚Π²ΠΎΡ€Ρ–Ρ‚ΡŒ схСму, яка описує Ρ‚ΠΈΠΏΠΈ, Π·Π°ΠΏΠΈΡ‚ΠΈ Ρ‚Π° ΠΌΡƒΡ‚Π°Ρ†Ρ–Ρ— для Π²Π°ΡˆΠΎΡ— ΠΌΠΎΠ΄Π΅Π»Ρ– Π΄Π°Π½ΠΈΡ…. ΠŸΡ€ΠΎΡΡ‚Π° схСма ΠΌΠΎΠΆΠ΅ виглядати Ρ‚Π°ΠΊ:

type Book { title: String author: String } type Query { books: [Book] }

ΠšΡ€ΠΎΠΊ 3: Π Π΅Π°Π»Ρ–Π·ΡƒΠΉΡ‚Π΅ Π²ΠΈΡ€Ρ–ΡˆΡƒΠ²Π°Ρ‡Ρ–

Π ΠΎΠ·Π²’язувачі – Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—, які Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°ΡŽΡ‚ΡŒ Π·Π° повСрнСння Π΄Π°Π½ΠΈΡ… для ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ поля Ρƒ схСмі. Π’ΠΈ Ρ€Π΅Π°Π»Ρ–Π·ΡƒΡ”Ρ‚Π΅ Ρ€ΠΎΠ·Π²’язувачі для отримання Π΄Π°Π½ΠΈΡ… Π· Π²Π°ΡˆΠΎΡ— Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… Π°Π±ΠΎ Ρ–Π½ΡˆΠΎΠ³ΠΎ Π΄ΠΆΠ΅Ρ€Π΅Π»Π° Π΄Π°Π½ΠΈΡ….

4. Π—Π°ΠΏΠΈΡ‚ Π΄Π°Π½ΠΈΡ…

ΠŸΡ–ΡΠ»Ρ Ρ‚ΠΎΠ³ΠΎ, як ваш сСрвСр Π½Π°Π»Π°ΡˆΡ‚ΠΎΠ²Π°Π½ΠΎ Ρ– Π²ΠΈΠ·Π½Π°Ρ‡Π΅Π½ΠΎ схСму, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡Π°Ρ‚ΠΈ Π·Π°ΠΏΠΈΡ‚ΡƒΠ²Π°Ρ‚ΠΈ Π΄Π°Π½Ρ– Π·Π° допомогою GraphQL. ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ Π·Π°ΠΏΠΈΡ‚Ρƒ для отримання ΠΊΠ½ΠΈΠ³ ΠΌΠΎΠΆΠ΅ виглядати Ρ‚Π°ΠΊ:

{ books { title author } }

5. Висновок

GraphQL – Ρ†Π΅ Ρ–Π½Π½ΠΎΠ²Π°Ρ†Ρ–ΠΉΠ½ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠΈ API, який дозволяє ΠΊΠ»Ρ–Ρ”Π½Ρ‚Π°ΠΌ Π·Π°ΠΏΠΈΡ‚ΡƒΠ²Π°Ρ‚ΠΈ самС Ρ‚Ρ– Π΄Π°Π½Ρ–, які Ρ—ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ–, ΠΏΡ–Π΄Π²ΠΈΡ‰ΡƒΡŽΡ‡ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ Ρ– ΠΏΠΎΠΊΡ€Π°Ρ‰ΡƒΡŽΡ‡ΠΈ досвід Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΡ–Π². Π’ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‡ΠΈ Ρ‚Π°ΠΊΡ– Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—, як Ρ‚ΠΎΡ‡Π½Π° Π²ΠΈΠ±Ρ–Ρ€ΠΊΠ° Π΄Π°Π½ΠΈΡ…, строго Ρ‚ΠΈΠΏΡ–Π·ΠΎΠ²Π°Π½Ρ– схСми Ρ‚Π° моТливості Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ часі, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚Π²ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ– Ρ‚Π° Π³Π½ΡƒΡ‡ΠΊΡ– Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΈ. Π’ΠΈΠ²Ρ‡Π°ΡŽΡ‡ΠΈ GraphQL, ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, як Π²ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅ спростити управління Π΄Π°Π½ΠΈΠΌΠΈ Ρƒ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

15%

Π—Π°ΠΎΡ‰Π°Π΄ΠΆΡƒΠΉΡ‚Π΅ 15% Π½Π° всіх послугах хостингу

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ свої Π½Π°Π²ΠΈΡ‡ΠΊΠΈ Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°ΠΉΡ‚Π΅ Π—Π½ΠΈΠΆΠΊΡƒ Π½Π° Π±ΡƒΠ΄ΡŒ-який Ρ‚Π°Ρ€ΠΈΡ„Π½ΠΈΠΉ ΠΏΠ»Π°Π½

Використовуй ΠΊΠΎΠ΄:

Skills
ΠŸΠΎΡ‡Π°Ρ‚ΠΈ