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 ▪️ Langganan sintetis tidak memerlukan resolver. Lihat kebijakan penerbitan peristiwa . |
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 RESTMutasi - Memodifikasi data sisi server, mirip
PUT
dengan operasi atauPATCH
di RESTLangganan - 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.