Прежде чем вы начнете читать: Я просмотрел документацию по GraphQL, но мой сценарий использования так специфичен c, и мне нужны только один раз данные, и поэтому я позволяю себе обратиться к сообществу за помощью. на этом, чтобы сэкономить время и разочарование (не планируя изучать GraphQL в будущем)
Intro
Я студент CS, разрабатывающий приложение для Flutter на сторона, где мне нужна информация об имени и местонахождении каждой автобусной остановки в конкретном округе c в Норвегии. К счастью, для этого есть открытый API-интерфейс GraphQL (URL API: https://api.entur.io/stop-places/v1/graphql) . Дело в том, что я не знаю, как запрашивать API-интерфейс GraphQL, и я не хочу тратить время на его изучение, поскольку собираюсь получить данные только один раз и покончить с этим.
Вот IDE для API: https://api.entur.io/stop-places/v1/ide
И , этот является точным запросом, который я хочу выполнить, поскольку я хочу получить автобусные остановки, расположенные в округе Тронхейм:
{
stopPlace(stopPlaceType: onstreetBus, countyReference: "Trondheim") {
name {
value
}
... on StopPlace {
quays {
geometry {
coordinates
}
}
}
}
}
Проблема с этим запросом заключается в том, что я не получаю никаких данных при передаче «Тронхейм» в countyReference (без countReReference я получаю данные, но не для Трондхейм). Я попытался использовать официальный муниципальный номер для округа, но безуспешно, и документация по API довольно скудная ... Может быть, мне придется связаться с людьми, ответственными за API, чтобы выяснить, что не должно быть проблемой.
Но теперь вернемся к реальной проблеме - как я могу сделать этот запрос, используя пакет GraphQL для Dart? Вот пакет, который я планирую использовать : (https://pub.dev/packages/graphql)
Я хочу создать объект автобусной остановки для каждой автобусной остановки, и я хочу поместить их всех в список. Вот моя модель автобусной остановки:
class BusStop with ChangeNotifier {
final String id;
final String name;
final LatLng location;
BusStop({
this.id,
this.name,
this.location
});
}
Когда речь идет об аутентификации, вот что говорится в документации:
Этот API-интерфейс открыт по лицензии NLOD, однако он необходим чтобы все потребители идентифицировали себя, используя заголовок ET-Client-Name. Entur установит строгие политики ограничения скорости на API-потребителях, которые не идентифицируют себя с заголовком и оставляют за собой право блокировать неопознанных потребителей. Структура ET-Client-Name должна быть такой: "company - application" Примеры заголовков: "brakar - tripplanner" "fosen_utvikling - boardboard" "norway_bussekspress - nwy-app"
Ссылка на Документация по API: https://developer.entur.org/pages-nsr-nsr
Было бы здорово узнать, как мне следует go об этом! Я благодарен за все ответы на этот вопрос, я знаю, что мне лень здесь изучать GraphQL, но из-за моего сценария использования я подумал, что это займет меньше времени и разочарования, если спросить здесь!