Menggunakan GraphQL

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Baca dokumentasi Apigee Edge.

Kebijakan GraphQL dapat mengurai payload permintaan GraphQL menjadi variabel alur pesan, memverifikasi permintaan terhadap skema GraphQL, atau keduanya.

Kebijakan GraphQL dapat mengurai payload GraphQL menjadi variabel alur pesan, memverifikasi permintaan GraphQL berdasarkan skema, atau keduanya.

Anda dapat menggunakan kebijakan GraphQL untuk:

  • Pastikan API Anda hanya memproses permintaan yang sesuai dengan skema yang Anda berikan.
  • Menerapkan pembatasan pada payload dengan menetapkan jumlah maksimum fragmen yang diizinkan.
  • Mengaitkan GraphQL dengan produk API.
  • Manfaatkan fitur kebijakan Oauth2, VerifyAPIKey, dan Kuota, seperti di REST.

GraphQL mendukung jenis payload berikut:

  • POST payload graphQL dengan Content-Type : application/graphql
  • POST payload graphQL dengan Content-Type: applcation/json
  • GET payload graphQL dengan payload sebagai parameter kueri

Untuk ringkasan opsi kebijakan GraphQL, lihat opsi GraphQL di bawah.

Untuk mempelajari GraphQL lebih lanjut, lihat GraphQL.org.

Contoh

Contoh berikut menunjukkan cara mengupload skema GraphQL ke Apigee, dan menggunakannya untuk memvalidasi permintaan dengan konten GraphQL.

Membuat file skema

Untuk menjalankan contoh, pertama-tama buat file skema GraphQL dengan isi berikut:

type Query {
  allPersons(last: Int): [Person!]!
}

type Mutation {
  createPerson(name: String!, age: Int!): Person!
}

type Subscription {
  newPerson: Person!
}

type Person {
  name: String!
  sex: String!
  age: Int!
  posts: [Post!]!
}

type Post {
  title: String!
  author: Person!
}

Simpan file dengan nama apa pun yang ingin Anda gunakan, diikuti dengan ekstensi .graphql.

Menambahkan kebijakan GraphQL di UI Apigee

Editor Proxy Baru

Pertama, buat kebijakan GraphQL sebagai berikut:

  1. Login ke UI Apigee.
  2. Di menu navigasi, pilih Develop > API Proxies.
  3. Dalam daftar proxy, pilih proxy API yang kebijakan GraphQL-nya ingin Anda gunakan.
  4. Klik tab Kembangkan.
  5. Di panel kiri, klik tombol + di samping folder Policies.
  6. Pada dialog Create policy, klik kolom Select policy type, lalu scroll ke bawah ke Mediasi, lalu pilih GraphQL.

    Dialog GraphQL Create Policy.

    Masukkan Display name dan Name.

    Selanjutnya, pilih file skema GraphQL sebagai berikut:

    1. Klik kolom Schema File. Tindakan ini akan menampilkan pilihan berikut:
      • Tidak Ada Skema. Jika Anda memilih opsi ini, Apigee tidak akan menggunakan skema untuk memvalidasi permintaan.
      • Mengimpor skema GraphQL (.graphql)
    2. Pilih Import GraphQL schema (.graphql). Tindakan ini akan menampilkan hal berikut:

      Pilih file skema.
    3. Klik Choose File dan pilih file skema yang Anda buat sebelumnya (yang harus memiliki ekstensi .graphql). File akan muncul di kolom Schema name.

      Skema dipilih.
  7. Klik Create untuk membuat kebijakan.

Setelah membuat kebijakan GraphQL, Anda dapat menambahkannya ke salah satu langkah di PreFlow:

  1. Pilih Proxy Endpoints > default > PreFlow di panel sebelah kiri:

    Endpoint target untuk pemilihan PreFlow di Proxy Explorer.

  2. Klik tombol + di samping PreFlow di panel Response di kanan bawah Visual Editor:

    Klik tombol + di samping PreFlow di panel Response.

  3. Pada dialog Add policy step, pilih kebijakan GQL-.
  4. Klik Add untuk melampirkan kebijakan.
  5. Klik Save untuk menyimpan revisi saat ini dengan perubahan Anda.
  6. Untuk men-deploy perubahan, klik tab Overview dan pilih Deploy.

Lihat opsi GraphQL di bawah untuk mengetahui opsi yang dapat ditetapkan untuk kebijakan GraphQL.

Editor Proxy Klasik

  1. Login ke UI Apigee.
  2. Di menu navigasi, pilih Develop > API Proxies.
  3. Dalam daftar proxy, pilih proxy API yang kebijakan GraphQL-nya ingin Anda gunakan.
  4. Klik tab Kembangkan.
  5. Di panel Flow: PreFlow, klik tombol + Step.

    Tombol langkah plus.
  6. Di panel Add Step, scroll ke bawah ke bagian bawah bagian Mediasi, lalu pilih GraphQL.

    Tambahkan kebijakan GraphQL.

    Panel Add Step menampilkan opsi berikut:

    • Nama Tampilan: Nama tampilan kebijakan.
    • Nama: Nama internal kebijakan.
    • File skema: Opsi untuk mengupload file yang berisi skema GraphQL yang akan digunakan Apigee untuk memvalidasi permintaan dengan konten GraphQL.

    Untuk menggunakan skema, lakukan hal berikut:

    1. Klik kolom Schema File. Tindakan ini akan menampilkan pilihan berikut:
      • Tidak Ada Skema. Jika Anda memilih opsi ini, Apigee tidak akan menggunakan skema untuk memvalidasi permintaan.
      • Mengimpor skema GraphQL (.graphql)
    2. Pilih Import GraphQL schema (.graphql). Tindakan ini akan menampilkan hal berikut:

      Pilih file skema.
    3. Klik Choose File dan pilih file skema yang Anda buat sebelumnya (yang harus memiliki ekstensi .graphql). File akan muncul di kolom Schema name.

      Skema dipilih.
  7. Klik Tambahkan. Panel Flow: PreFlow sekarang muncul seperti yang ditunjukkan di bawah ini:

    Panel PreFlow dengan kebijakan GraphQL.

    Lihat opsi GraphQL di bawah untuk mengetahui opsi yang dapat ditetapkan untuk kebijakan GraphQL. Untuk contoh ini, biarkan apa adanya.

  8. Untuk men-deploy proxy, klik tab Overview dan pilih Deploy.

    Panel PreFlow dengan kebijakan GraphQL.

Sekarang, Anda dapat menguji kebijakan GraphQL dengan perintah curl berikut:

curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query query_name {allPersons {name}}' -k

Dengan PROXY_BASEPATH sebagai dasar jalur proxy dan HOST_NAME adalah nama proxy Anda, termasuk nomor revisi terbaru. Saat Anda menjalankan perintah tersebut, Apigee akan memvalidasi permintaan terhadap skema dan menampilkan output berikut.

{
  "query query_name {allPersons {name}}": "",
  "id": 101
}

Berikut ini contoh lain dari permintaan:

curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query ilovegql {DEADBEEF}' -k

Kali ini validasi permintaan gagal dengan pesan error berikut.

{"fault":{"faultstring":"steps.graphQL.SchemaValidationFailed","detail":{"errorcode":"steps.graphQL.SchemaValidationFailed"}}}

Opsi GraphQL

GraphPolicy memiliki opsi berikut:

  • OperationType: Jenis operasi. Opsinya adalah:
    • query: GraphQL yang setara dengan operasi GET REST.
    • mutation: GraphQL yang setara dengan operasi PUT REST.
    • query_mutation: query dan mutation.
  • MaxDepth: Kedalaman maksimum kueri, jika direpresentasikan sebagai hierarki. MaxDepth memungkinkan Anda memblokir kueri mendalam dalam payload, sehingga Apigee tidak perlu membuat variabel alur yang sangat besar untuk menyimpan nilai tersebut. Namun, payload dikirim sebagaimana adanya, terlepas dari nilai MaxDepth.
  • MaxCount: Jumlah maksimum fragmen yang dapat berada dalam payload. Anda dapat menggunakan cara ini untuk mencegah server back-end GraphQL pelanggan mengeksekusi kueri yang sangat kompleks, sehingga memaksa klien untuk memecah logika mereka menjadi payload yang lebih kecil.
  • Action: Salah satu tindakan GraphQL berikut:
    • parseApigee mengurai payload GraphQL menjadi variabel alur. Anda kemudian dapat menggunakan konten variabel alur dalam kebijakan seperti JavaCallout. Perhatikan bahwa parse juga memverifikasi payload.
    • verify: Apigee memverifikasi bahwa payload GraphQL sesuai dengan skema yang diupload ke proxy. Anda dapat menggunakan verify untuk memastikan bahwa Anda tidak mendapatkan permintaan yang tidak sesuai dengan skema Anda. Hal ini dapat menghemat waktu CPU yang berharga di backend.
    • parse_verify: Mengurai dan memverifikasi payload.
  • ResourceURL: Jalur ke file skema GraphQL yang digunakan Apigee untuk memverifikasi permintaan GraphQL.`

Untuk mempelajari opsi ini lebih lanjut, lihat halaman referensi kebijakan GraphQL.