Bagikan melalui


Gambaran umum API GraphQL di Azure API Management

BERLAKU UNTUK: Semua tingkatan Manajemen API

Anda dapat menggunakan API Management untuk mengelola API GraphQL, yang merupakan API berdasarkan bahasa kueri GraphQL. GraphQL memberikan deskripsi data yang lengkap dan dapat dimengerti dalam API, memberi klien kekuatan untuk mengambil data yang dibutuhkan secara efisien. Pelajari selengkapnya tentang GraphQL.

API Management membantu Anda mengimpor, mengelola, melindungi, menguji, menerbitkan, dan memantau API GraphQL. Anda dapat memilih salah satu dari dua model API:

Pass-through GraphQL Sintetis GraphQL
▪️ API pass-through ke titik akhir layanan GraphQL yang ada

▪️ Dukungan untuk kueri, mutasi, dan langganan GraphQL
▪️ API berdasarkan skema GraphQL kustom

▪️ Dukungan untuk kueri, mutasi, dan langganan GraphQL

▪️ Mengonfigurasi pemecah masalah kustom, misalnya, ke sumber data HTTP

▪️ Mengembangkan skema GraphQL dan klien berbasis GraphQL sambil menggunakan data dari API warisan

▪️ Langganan sintetis tidak memerlukan pemecah masalah. Lihat kebijakan penyelenggaraan acara.

Ketersediaan

  • API GraphQL didukung di semua tingkat layanan API Management.
  • API GraphQL sintetis saat ini tidak didukung di ruang kerja API Management.
  • Dukungan untuk langganan GraphQL pada API GrapQL sintetis sedang dalam pratinjau dan tidak tersedia di tingkat Konsumsi.

Apa itu GraphQL?

GraphQL adalah bahasa kueri sumber terbuka dan standar industri untuk API. Tidak seperti API gaya REST yang dirancang di sekitar tindakan atas sumber daya, API GraphQL mendukung serangkaian kasus penggunaan yang lebih luas dan berfokus pada jenis data, skema, dan kueri.

Spesifikasi GraphQL secara eksplisit menyelesaikan masalah umum yang dialami oleh aplikasi web klien yang mengandalkan REST API:

  • Dibutuhkan sejumlah besar permintaan untuk memenuhi kebutuhan data untuk satu halaman.
  • REST API sering mengembalikan lebih banyak data daripada yang diperlukan oleh halaman yang dirender.
  • Aplikasi klien perlu melakukan polling untuk mendapatkan informasi baru.

Dengan menggunakan API GraphQL, aplikasi klien dapat menentukan data yang diperlukan untuk merender halaman dalam dokumen kueri yang dikirim sebagai satu permintaan ke layanan GraphQL. Aplikasi klien juga dapat berlangganan pembaruan data yang didorong dari layanan GraphQL secara real time.

Skema dan jenis

Di API Management, tambahkan API GraphQL dari skema GraphQL, baik yang diambil dari titik akhir API GraphQL backend atau diunggah oleh Anda. Skema GraphQL menjelaskan:

  • Jenis dan bidang objek data yang dapat diminta klien dari API GraphQL.
  • Jenis operasi yang diizinkan pada data, seperti kueri.
  • Jenis lain, seperti serikat dan antarmuka, yang memberikan fleksibilitas dan kontrol tambahan atas data.

Misalnya, skema GraphQL dasar untuk data pengguna dan kueri untuk semua pengguna mungkin terlihat seperti berikut ini:

type Query {
    users: [User]
}

type User {
    id: String!
    name: String!
}

Jenis operasi

API Management mendukung jenis operasi berikut dalam skema GraphQL. Untuk informasi selengkapnya tentang jenis operasi ini, lihat spesifikasi GraphQL.

  • Kueri: Mengambil data, mirip GET dengan operasi di REST.

  • Mutasi: Memodifikasi data sisi server, mirip dengan operasi PUT atau PATCH di REST.

  • Langganan: Memungkinkan memberi tahu klien berlangganan secara real time tentang perubahan pada data pada layanan GraphQL.

    Misalnya, ketika data dimodifikasi melalui mutasi GraphQL, klien berlangganan dapat secara otomatis diberi tahu tentang perubahan tersebut.

    Penting

    API Management mendukung langganan yang diterapkan menggunakan protokol WebSocket graphql-ws . Kueri dan mutasi tidak didukung melalui WebSocket.

Jenis lain

API Management mendukung jenis union dan antarmuka dalam skema GraphQL.

Pemecah masalah

Resolver mengurus pemetaan skema GraphQL ke data backend, menghasilkan data untuk setiap bidang dalam jenis objek. Sumber data bisa berupa API, database, atau layanan lain. Misalnya, fungsi resolver akan bertanggung jawab untuk mengembalikan data untuk users kueri dalam contoh sebelumnya.

Di API Management, Anda dapat membuat resolver untuk memetakan bidang dalam jenis objek ke sumber data backend. Anda mengonfigurasi resolver untuk bidang dalam skema API GraphQL buatan, tetapi Anda juga dapat mengonfigurasinya untuk menggantikan resolver bidang default yang digunakan oleh API GraphQL pass-through.

API Management saat ini mendukung resolver berdasarkan API HTTP, Cosmos DB, dan sumber data Azure SQL untuk mengembalikan data untuk bidang dalam skema GraphQL. Setiap resolver dikonfigurasi menggunakan kebijakan yang disesuaikan untuk menyambungkan ke sumber data dan mengambil data:

Sumber data Kebijakan penyelesai
Sumber data berbasis HTTP (REST atau SOAP API) sumber-data-http
Azure Cosmos DB Database cosmosdb-data-source
Azure SQL Database sumber-data-sql

Misalnya, resolver berbasis HTTP API untuk kueri sebelumnya users dapat merujuk pada operasi GET di backend REST API.

<http-data-source>
    <http-request>
        <set-method>GET</set-method>
        <set-url>https://myapi.contoso.com/api/users</set-url>
    </http-request>
</http-data-source>

Untuk informasi selengkapnya tentang menyiapkan resolver, lihat Mengonfigurasi pemecah masalah GraphQL.

Mengelola API GraphQL

  • Mengamankan API GraphQL dengan menerapkan kebijakan kontrol akses yang ada dan kebijakan validasi GraphQL untuk mengamankan dan melindungi dari serangan khusus GraphQL.
  • Jelajahi skema GraphQL dan jalankan kueri pengujian terhadap API GraphQL di portal Azure dan pengembang.