Moi,
Train - Fields:
...
...
Onko nämä tarkoituksella jätetty nullableksi? Tarkastellaan esim. tarkemmin Train tietotyypin timeTableRows-kenttää:
Yllä oleva määritys sanoo, että Train-tietotyypin timeTableRows-kenttä itsessään saattaa olla null. Lisäksi määritys sanoo, että timeTableRows-listassa voi olla null-elementtejä. Tämä on ristiriidassa Train-vastaustyypin kuvaksen kanssa sivulla
https://www.digitraffic.fi/rautatieliikenne/#junat missä on määritetty että esim. timeTableRows-kenttä "Ei voi olla tyhjä". Voisin itse olettaa (tietämättä tarkemmin miten data on mallinnettu), että GraphQL rajapinnassa Train-tietotyypin timeTableRows-kenttä tulisi olla määritetty näin:
Huomatkaa non-nullable (!) merkinnät yllä. Tämä tarkoittaisi että Train-tietotyypin timeTableRows-lista ei voi olla null, ja listassa ei voi olla null-elementtejä.
Nämä non-nullable tiedot olisi erittäin hyödyllistä olla täsmällisiä GraphQL rajapintakuvauksessa, etenkin kun GraphQL rajapintakuvausta käytetään generoimaan automaattisesti client-kirjastot esim. TypeScriptille. Jos GraphQL-rajapintakuvaksesta jättää näissä lista-tyyppisissä kentissä määrittämättä non-nullable tietoa (silloin kun kenttä ei oikeasti voi olla koskaan tyhjä) niin client-koodissa joudutaan turhaan tarkistamaan etteivät tietotyypit ole null ennen niiden käyttöä, joka aiheuttaa lisäkompleksisuutta.
Terveisin,
Vili Ketonen