b'\n_START_ARTICLE_\nGraphQL\n_START_SECTION_\nP\xc3\xa4ringud ja mutatsioonid\n_START_PARAGRAPH_\nGraphQL toetab kahte t\xc3\xbc\xc3\xbcpi p\xc3\xa4ringuid, tavalisi andmep\xc3\xa4ringuid ja mutatsioone. Tavalised andmep\xc3\xa4ringud tagastavad kliendile ainult andmeid, samas kui mutatsioonid on m\xc3\xb5eldud andmebaasis muudatuste tegemiseks. GraphQL p\xc3\xa4ringud on \xc3\xbcsna sarnased JSON-t\xc3\xbc\xc3\xbcpi andmestruktuuri omadega. P\xc3\xa4ringus tuleb algselt kirjeldada, kas tegemist on p\xc3\xa4ringu v\xc3\xb5i mutatsiooniga. P\xc3\xa4ringu jaoks kasutame _NEWLINE_t\xc3\xa4histust query ja mutatsiooni jaoks mutation. Mutatsiooni ja p\xc3\xa4ringu puhul kasutatakse sama struktuuri._NEWLINE_N\xc3\xa4ide_NEWLINE_Kui serveris on defineeritud andmet\xc3\xbc\xc3\xbcp muutujale name, siis vastav p\xc3\xa4ring tagastaks sellele vastava v\xc3\xa4\xc3\xa4rtuse._NEWLINE_P\xc3\xa4ringu_NEWLINE_query isikuNimi{_NEWLINE_nimi}_NEWLINE__NEWLINE_vaste n\xc3\xa4eks v\xc3\xa4lja j\xc3\xa4rgnev JSON-t\xc3\xbc\xc3\xbcpi objekt:_NEWLINE_{_NEWLINE_data{_NEWLINE_nimi: "henri"_NEWLINE_}}_NEWLINE__NEWLINE_Samuti saab p\xc3\xa4ringutele kaasa anda muutujaid:_NEWLINE_query p\xc3\xa4ringKoosMuutujatega($isikukood: string) {_NEWLINE_isik(isikukood: $isikukood) {_NEWLINE_nimi_NEWLINE_}}_NEWLINE_P\xc3\xa4ring nimega p\xc3\xa4ringKoosMuutujatega ootab, et talle antaks kaasa muutuja nimega isikukood, mis on string t\xc3\xbc\xc3\xbcpi. P\xc3\xa4ring _NEWLINE_oskab selle muutuja p\xc3\xb5hjal tagastada isiku, kelle isikukood on v\xc3\xb5rdne p\xc3\xa4ringule kaasa antud isikukoodiga.\n_START_SECTION_\nSkeem\n_START_PARAGRAPH_\nGraphQL toetab ka andmete struktuuri kirjeldust. Selle abil saab server kontrollida, et andmed oleks oodatud t\xc3\xbc\xc3\xbcpi. _NEWLINE_Lisaks on v\xc3\xb5imalik kirjeldada projektile eriomaseid andmet\xc3\xbc\xc3\xbcpe._NEWLINE_Baas-andmet\xc3\xbc\xc3\xbcpideks on Int, Float, String, Boolean ja ID. Int on 32-bitine number. Float on kahe komakoha t\xc3\xa4psusega _NEWLINE_ujukomaarv. String on tekstit\xc3\xbc\xc3\xbcpi v\xc3\xa4\xc3\xa4rtus ja boolean on t\xc3\xb5ev\xc3\xa4\xc3\xa4rtusega andmet\xc3\xbc\xc3\xbcp. ID v\xc3\xa4\xc3\xa4rtustab unikaalset v\xc3\xa4\xc3\xa4rtust,_NEWLINE_mis on string t\xc3\xbc\xc3\xbcpi, aga ei ole inimesele loetaval kujul._NEWLINE_Andmet\xc3\xbc\xc3\xbcpe saab ka m\xc3\xa4\xc3\xa4rata Non-Null-iks, mis t\xc3\xa4hendab, et nende v\xc3\xa4\xc3\xa4rtus ei saa olla null t\xc3\xbc\xc3\xbcpi ja peab alati tagastama enda _NEWLINE_t\xc3\xbc\xc3\xbcpi v\xc3\xa4\xc3\xa4rtuse. Selle t\xc3\xa4hiseks on skeemis "!"._NEWLINE_Massiive saab t\xc3\xa4histada, kui lisada andmet\xc3\xbc\xc3\xbcbile \xc3\xbcmber kantsulud. Nt [Int] t\xc3\xa4histab Int-t\xc3\xbc\xc3\xbcpi massiivi._NEWLINE_GraphQL toetab ka liideseid (ingl k interface), mille eesm\xc3\xa4rgiks on luua projektile eriomaseid andmet\xc3\xbc\xc3\xbcpe._NEWLINE_Nt. liidese abil saame \xc3\xa4ra kirjeldada isiku j\xc3\xa4rgneval viisil:_NEWLINE_interface isik {_NEWLINE_isikukood: Int!_NEWLINE_eesNimi: String!_NEWLINE_keskmineNimi: String_NEWLINE_pereNimi: String!_NEWLINE_vanus: Int!_NEWLINE_lapsed: [isik]}_NEWLINE_N\xc3\xa4itest on n\xc3\xa4ha, et liidesel isik on eesNimi, pereNimi, mis on teksti t\xc3\xbc\xc3\xbcpi Non-Null v\xc3\xa4ljad, lisaks isikukood ja vanus, _NEWLINE_mis on Int-t\xc3\xbc\xc3\xbcpi Non-Null v\xc3\xa4ljad. V\xc3\xa4li lapsed on massiiv isik-t\xc3\xbc\xc3\xbcpi objektidest, mis ei pea alati vastust tagastama. Samamoodi _NEWLINE_v\xc3\xb5ib v\xc3\xa4li keskmineNimi tagastada t\xc3\xbchja v\xc3\xa4\xc3\xa4rtuse.'