Lähdin nyt kehittämään eteenpäin junien tietojen esittämistä Transporter-sovelluksessani.
Tässä muutama huomioita:
Juuri kun tätä kirjoitan tämä API-kutsu ei palauta yhtäkään junaa
Sen sijaan tämä kutsu, jossa arriving_trains=5 ja departing_trains=5 palauttaa yhden junan
Eivätkö nuo parametrit määritä maksimimäärät, eli arvolla 1 pitäisi tulla se yksi juna? Nyt näen että esim.
junat.net kutsuu toistuvasti arriving_trains=100 ja departing_trains=100 parametreilla junia, ehkä jotta saa ainakin jotain vastauksia takaisin. Haluaisin rajoittaa haut esim. 10 tai 20 seuraavaan lähtevään junaan, käyttämättä turhaan verkkoa isojen graphQL JSON-vastausten lataamiseen.
GraphQL-API on nykyisellään aivan toivottoman hankala käyttää. Sen objektit näyttävät REST API -kutsujen perusteella autogeneroiduilta, esim. getTrainsFromDepartureToArrivalStationUsingGET_items_timeTableRows_items_trainReady on yhden objektin nimi.
Kuten GraphQL rajapinnoissa yleensä on tapana, aliobjekteja ja niiden variableja haetaan toistensa sisältä, vrt. HSL Digitransit GraphQL-rajapinta. Digitraffic API:ssa tämä ei onnistu koska mitään yleisiä objekteja (esim. Train, Station tai TimetableRow) ei edes ole olemassa. Hyvin yleinen use case olisi pyytää GraphQL:ää käyttäen junan timetable rivit ja kunkin sisällä juna-aseman nimi. Nyt se ei ole mahdollista ilman usean erillisen queryn käyttöä.
Lopuksi, olisin odottanut voivani halutessani tehdä Digitraffic GraphQL:ssä vaikkapa jotain tämän kaltaista:
{
train(commuterLineID: "A") {
trainNumber
stations {
name
scheduledArrival
trains {
trainNumber
}
}
}
}