နားလည်ထားရမယ့် အချက်
GraphQL field တိုင်းက argument လက်ခံနိုင်ပါတယ်—`tutorial(id: "42")` လို syntax ဖြင့် field တစ်ခုချင်းကို parameterize လုပ်နိုင်ပါတယ်။ Value ကို query string ထဲ တိုက်ရိုက် hardcode မလုပ်ဘဲ `$id: ID!` လို variable declare လုပ်ပြီး request တစ်ခုချင်းစီမှာ variables JSON object သီးခြားပို့ရင် client code က query string ကို reuse လုပ်နိုင်ပြီး injection risk လည်းလျော့ပါတယ်။ Default value (`$includeAuthor: Boolean = true`) နှင့် `@include`/`@skip` directives ဖြင့် conditional field inclusion ကိုပါ ထိန်းနိုင်ပါတယ်။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Tutorial Platform frontend က `TutorialById` query ကို component တစ်ခုတည်းကနေ id အမျိုးမျိုးနဲ့ ပြန်သုံးမယ်—query string တစ်ခုတည်းရှိပြီး variables ပဲပြောင်းမယ်။ Mobile client က author bio မလိုချင်ရင် `$includeAuthor: false` ပို့ပြီး `@include(if: $includeAuthor)` directive က author sub-selection ကို skip လုပ်စေမယ်။
အတူတူ စမ်းရေးကြည့်မယ်
query TutorialById($id: ID!, $includeAuthor: Boolean = true) {
tutorial(id: $id) {
title
summary
author @include(if: $includeAuthor) {
name
}
}
}
# variables: { "id": "42", "includeAuthor": false }Argument ပါသော field နှင့် reusable variable-based query တစ်ခုကို ရေးနိုင်မည်။၅ မိနစ် စမ်းကြည့်
`$difficulty: Difficulty` variable သုံးပြီး `tutorials(difficulty: $difficulty)` query တစ်ခုရေးပြီး variables value နှစ်မျိုးနဲ့ run ကြည့်ပါ။
သတိလေးတစ်ချက်
Value ကို query string ထဲ တိုက်ရိုက် string concatenate လုပ်ပြီးမပို့ပါနှင့်—user input ပါလာရင် injection/caching ပြဿနာဖြစ်နိုင်ပါတယ်။ Variables ကိုသုံးပါ။
GraphQL — Queries and Mutations — GraphQL