В представленной статье находится информация о том, что такое GraphQL и как с ним работать.
Travelpayouts подготовил для партнёров GraphQL сервис для доступа к историческим данным поисков авиабилетов.
Доступ к GraphQL открыт для всех партнёров, зарегистрированных в Travelpayouts и подключенных к программе Aviasales.
Обратите внимание на лимиты запросов при работе с GraphQL API.
Что такое GraphQL
GraphQL — это язык запросов к API, позволяющий с помощью одного запроса получить все требуемые данные. С его помощью можно получать больше данных, отправляя меньше запросов, чем при работе с классическим REST API. Подробнее с принципами работы GraphQL можно познакомиться в официальной документации.
Мы подготовили интерфейс, в котором вы можете познакомиться с возможностями GraphQL API: http://api.travelpayouts.com/graphql/v1/playground.
Как работать с GraphQL API
Рассмотрим принцип работы с GraphQL API на примере песочницы.
Каждый запрос должен содержать ваш API токен. Поместите его в заголовок запроса (HTTP Headers) в поле X-Access-token:
{
"X-Access-token": "ВставьтеСюдаВашТокен"
}
В запросе необходимо передать параметры, которые отвечают за сам запрос и за содержимое ответа.
Пример запроса:
{
prices_one_way( #в скобках указываются параметры, отвечающие за запрос
params: {
origin: "MOW"
destination: "LON"
depart_months: "2022-02-01"
no_lowcost: true
}
paging: {
limit: 3
offset: 0
}
sorting: VALUE_ASC
)
#далее перечисляем параметры ответа
{
departure_at
value
trip_duration
ticket_link
}
}
С помощью приведённого выше запроса мы получим три самых дешевых билета из Москвы в Лондон без учёта лоукостеров за февраль 2022.
Пример ответа:
{ "data": { "prices_one_way": [ { "departure_at": "2022-02-18T16:00:00+03:00", "value": 7967, "trip_duration": 0, "ticket_link": "/MOW1802LON1?t=BA16451892001645203900000245DMELHR_1bd2ff318f7e333fde2f3acc7271537a_7967&search_date=09022022&expected_price_uuid=34db070b-0234-4b8b-a423-a5839a446575&expected_price_currency=rub" }, { "departure_at": "2022-02-28T05:10:00+03:00", "value": 8356, "trip_duration": 0, "ticket_link": "/MOW2802LON1?t=A316460142001646082900001145DMEATHLHR_6ff5344b9a723d764f583415fc5b31e3_8356&search_date=09022022&expected_price_uuid=d30e37dc-16bb-4275-9fd7-7fd866a8d65d&expected_price_currency=rub" }, { "departure_at": "2022-02-24T18:30:00+03:00", "value": 8444, "trip_duration": 0, "ticket_link": "/MOW2402LON2?t=PC16457166001645781400001080DMESAWSTN_3d528a2649ce79fe6e46b9598c18311c_16889&search_date=09022022&expected_price_uuid=5846bd36-9277-4d03-a91c-d88d22246e87&expected_price_currency=rub" } ] } }
В ответе получаем цену, дату отправления, время в пути и код, который нужно подставить к https://www.aviasales.ru/search/ для получения ссылки на билет в выдаче Aviasales.
Список всех доступных запросов с описанием параметров и полей ответа находится на вкладке Docs. Учтите, что вам также необходимо указать ваш API токен в X-Access-Token в поле Headers, чтобы просмотреть содержимое вкладки.
GraphQL позволяет заменить несколько одинаковых запросов к REST API одним запросом, с помощью которого вы получаете всё, что требуется. Например, такой запрос возвращает три популярных предложения сразу для трех направлений:
query {
MOW_AER: prices_round_trip(
params: {
origin: "LON"
destination: "BCN"
}
sorting: ROUTE_WEIGHT_DESC
paging: {
offset: 0
limit: 3
}
)
{
departure_at
return_at
value
}
}