Gambaran umum API GraphQL di Azure API Management

BERLAKU UNTUK: Semua tingkatAN API Management

Anda dapat menggunakan API Management untuk mengelola API GraphQL - 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:

GraphQL Pass-through Synthetic 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

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 di API GraphQL sintetis saat ini 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 mereka butuhkan 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:

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 PUT dengan operasi atau PATCH di REST

  • Langganan - Memungkinkan memberi tahu klien berlangganan secara real time tentang perubahan 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 sintetis, tetapi Anda juga dapat mengonfigurasinya untuk mengambil alih pemecah masalah 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 resolver
Sumber data berbasis HTTP (REST atau SOAP API) http-data-source
Database Azure Cosmos DB cosmosdb-data-source
Azure SQL database sql-data-source

Misalnya, resolver berbasis HTTP API untuk kueri sebelumnya users mungkin memetakan ke GET operasi di REST API backend:

<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.

Langkah berikutnya