Menambahkan API GraphQL sintetis dan menyiapkan pemecah masalah bidang

BERLAKU UNTUK: Semua tingkatAN API Management

Di API Management, Anda dapat menambahkan API GraphQL di salah satu dari dua model: pass-through ke titik akhir GraphQL yang ada, atau mengimpor skema GraphQL dan membuat API GraphQL sintetis dengan pemecah bidang kustom. Untuk informasi selengkapnya, lihat gambaran umum GraphQL.

Dalam artikel ini, Anda akan:

  • Mengimpor skema GraphQL ke instans API Management Anda
  • Menyiapkan resolver untuk kueri GraphQL menggunakan titik akhir HTTP yang sudah ada
  • Menguji API GraphQL Anda

Jika Anda ingin mengekspos titik akhir GraphQL yang ada sebagai API, lihat Mengimpor API GraphQL.

Prasyarat

  • Instans API Management yang ada. Buat jika Anda belum melakukannya.
  • File skema GraphQL yang valid dengan .graphql ekstensi.
  • Titik akhir GraphQL backend adalah opsional untuk skenario ini.

Membuka instans API Management Anda

  1. Di portal Microsoft Azure, cari dan pilih layanan API Management.

    Pilih layanan API Management

  2. Di halaman layanan API Management, pilih instans API Management Anda.

    Pilih instans API Management Anda

Tambahkan skema GraphQL

  1. Dari menu navigasi samping, di bagian API, pilih API.

  2. Pada Tentukan API baru, pilih ikon GraphQL.

    Cuplikan layar memilih ikon GraphQL dari daftar API.

  3. Dalam kotak dialog, pilih Penuh dan lengkapi bidang formulir yang diperlukan.

    Cuplikan layar bidang untuk membuat API GraphQL.

    Bidang Deskripsi
    Nama tampilan Nama yang akan ditampilkan untuk API WebSocket Anda.
    Nama Nama asli API GraphQL. Otomatis terisi saat Anda mengetik nama tampilan.
    Jenis GraphQL Pilih Synthetic GraphQL untuk mengimpor dari file skema GraphQL.
    Titik akhir Fallback GraphQL Secara opsional masukkan URL dengan nama titik akhir GraphQL API. API Management meneruskan kueri GraphQL ke titik akhir ini saat pemecah masalah kustom tidak diatur untuk suatu bidang.
    Keterangan Menambahkan deskripsi API Anda.
    Skema URL Buat pilihan berdasarkan titik akhir GraphQL Anda. Pilih salah satu opsi yang menyertakan skema WebSocket (WS atau WSS) jika API GraphQL Anda menyertakan jenis langganan. Pilihan default: HTTP(S).
    Akhiran URL API Tambahkan sufiks URL untuk mengidentifikasi API spesifik ini dalam instans API Management ini. Akhiran harus unik dalam instans API Management ini.
    URL Dasar Bidang yang tidak dapat diedit dan menampilkan URL basis API Anda
    Tag Mengaitkan API GraphQL Anda dengan tag baru atau yang sudah ada.
    Produk Mengaitkan API WebSocket Anda dengan produk untuk memublikasikannya.
    Versi API ini? Pilih untuk menerapkan skema penerapan versi ke API GraphQL Anda.
  4. Pilih Buat.

  5. Setelah API dibuat, telusuri atau ubah skema pada tab Desain .

Mengonfigurasi pemecah masalah

Konfigurasikan resolver untuk memetakan bidang dalam skema ke titik akhir HTTP yang sudah ada. Langkah-langkah tingkat tinggi disediakan di sini. Untuk detailnya, lihat Mengonfigurasi pemecah masalah GraphQL.

Misalkan Anda mengimpor skema GraphQL dasar berikut dan ingin menyiapkan pemecah masalah untuk kueri pengguna.

type Query {
    users: [User]
}

type User {
    id: String!
    name: String!
}
  1. Dari menu navigasi samping, di bawah bagian API, pilih API> API GraphQL Anda.

  2. Pada tab Skema , tinjau skema untuk bidang dalam jenis objek tempat Anda ingin mengonfigurasi pemecah masalah.

    1. Pilih bidang, lalu di margin kiri, arahkan penunjuk.

    2. Pilih + Tambahkan Resolver

      Cuplikan layar menambahkan pemecah masalah GraphQL di portal.

  3. Pada halaman Buat Resolver :

    1. Perbarui properti Nama jika Anda mau, secara opsional masukkan Deskripsi, dan konfirmasi atau perbarui pilihan Tipe dan Bidang.
    2. Di Sumber data, pilih HTTP API.
  4. Di editor kebijakan Resolver, perbarui <http-data-source> elemen dengan elemen turunan untuk skenario Anda. Misalnya, resolver berikut mengambil bidang pengguna dengan melakukan GET panggilan ke sumber data HTTP yang sudah ada.

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

    Cuplikan layar mengonfigurasi kebijakan resolver di portal.

  5. Pilih Buat.

  6. Untuk mengatasi data untuk bidang lain dalam skema, ulangi langkah-langkah sebelumnya untuk membuat pemecah masalah.

Tip

Saat Anda mengedit kebijakan resolver, pilih Jalankan Pengujian untuk memeriksa output dari sumber data, yang dapat Anda validasi terhadap skema. Jika terjadi kesalahan, respons menyertakan informasi pemecahan masalah.

Menguji API GraphQL Anda

  1. Navigasi ke instans API Management Anda.

  2. Dari menu navigasi samping, di bagian API, pilih API.

  3. Di bawah Semua API, pilih API GraphQL Anda.

  4. Pilih tab Uji untuk mengakses konsol Uji.

  5. Di bawah Header:

    1. Pilih header dari menu drop-down Nama.
    2. Masukkan nilai ke bidang Nilai.
    3. Tambahkan lebih banyak lagi header dengan memilih + Tambahkan header.
    4. Hapus header menggunakan ikon keranjang sampah.
  6. Jika Anda telah menambahkan produk ke API GraphQL Anda, terapkan lingkup produk di bawah Terapkan lingkup produk.

  7. Di bawah Editor Kueri, pilih:

    1. Setidaknya satu bidang atau subbidang dari daftar di menu samping. Bidang dan subbidang yang Anda pilih akan muncul di editor kueri.

    2. Mulailah mengetik di editor kueri untuk menulis kueri.

      Cuplikan layar menambahkan bidang ke editor kueri.

  8. Di bawah Variabel kueri, tambahkan variabel untuk menggunakan kembali kueri atau mutasi yang sama dan melewatkan nilai yang berbeda.

  9. Pilih Kirim.

  10. Menampilkan Respons.

    Cuplikan layar menampilkan respons kueri pengujian.

  11. Ulangi langkah-langkah sebelumnya untuk menguji payload yang berbeda.

  12. Ketika pengujian selesai, keluar dari konsol pengujian.

Mengamankan API GraphQL Anda

Amankan API GraphQL Anda dengan menerapkan kebijakan autentikasi dan otorisasi yang ada dan kebijakan validasi GraphQL untuk melindungi dari serangan khusus GraphQL.

Langkah berikutnya