Быстрый старт

Чтобы сделать свой первый запрос в API Яндекс Погоды, необходимо получить ключ доступа.
Получить тестовый бесплатный ключ самостоятельно можно на странице API Яндекс Погоды.

Для авторизации доступа необходимо полученный ранее ключ передать в заголовке HTTP-запроса X-Yandex-Weather-Key

Далее необходимо сформировать сам запрос в соответствии со схемой.

Вы можете начать с простого запроса:



{
  weatherByPoint(request: { lat: 52.37125, lon: 4.89388 }) {
    now {
      temperature
    }
  }
}

Этот запрос буквально означает: "Покажите мне текущие данные о температуре для этих координат".

Вам нужно передать этот текст в парметре body POST-запроса. HTTP-запрос выполняется по адресу https://api.weather.yandex.ru/graphql/query. Вы можете использовать любой HTTP-клиент.

Пример на языке Python

Далее представлен минимальный работающий пример на языке программирования Python. Чтобы его запустить, достаточно вставить свой ключ доступа к API в значение переменной access_key и выполнить этот код с помощью интерпретатора.

import requests

# insert your real key here!
access_key = "your_key"

headers = {
    "X-Yandex-Weather-Key": access_key
}

query = """{
  weatherByPoint(request: { lat: 52.37125, lon: 4.89388 }) {
    now {
      temperature
    }
  }
}"""

response = requests.post('https://api.weather.yandex.ru/graphql/query', headers=headers, json={'query': query})

print(response.content)

Как сформировать запрос к GraphQL в API Яндекс Погоды

Для формирования запросов в API Яндекс Погоды используется язык запросов GraphQL.
GraphQL позволяет зафиксировать схему, описывающую данные в API понятным для пользователя образом. Данная схема однозначно определяет то, как должен быть сформирован запрос в API и каким будет формат ответа.
Основным преимуществом GraphQL-схемы (вместо, например, REST API) является возможность получить за один запрос любое подмножество данных. При разработке приложений это позволяет писать более короткий и понятный код, т.к. нет необходимости описывать логику склеивания данных из ответов на запросы по разным типам данных. Более того, большинство провайдеров погодных API тарифицируют количество запросов в API за единицу времени. Это значит, что получение всех необходимых данных за один запрос (вместо нескольких) экономически более выгодно.

Запрос – это простой текст, похожий на JSON. Каждый запрос заключается в фигурные скобки.

{
  # request parameters
}

Выше был рассмотрен пример запроса "температуры сейчас в точке". Ключевым в этом запросе является вызов метода weatherByPoint с параметром request, для которого устанавливается значение:

{
  lat: 52.37125,
  lon: 4.89388
}

Тем самым можно сообщить системе "покажи погоду в точке" и указать, для какой точки необходимо получить данные. Далее укажите, какие конкретно данные нужно получить. Для этого добавьте необходимые структуры в запрос внутри метода weatherByPoint:

weatherByPoint(request: { lat: 52.37125, lon: 4.89388 })
{
  now {          # weather for now
    temperature  # temperature value
  }
}

Выполнив такой запрос, ответ будет:

{
  "data": {
    "weatherByPoint": {
      "now": {
        "temperature": 20
      }
    }
  }
}

Как пользоваться playground и подробнее изучить GraphQL-схему

API Яндекс Погоды оснащен интерактивным интерфейсом-песочницей, с помощью которого можно пробовать составлять запросы и выполнять их. Песочница позволяет составлять запрос с использованием возможностей автодополнения и интерактивной документации, в которой подробно описана GraphQL-схема API. После составления запроса его можно сразу выполнить и убедиться, что запрос составлен корректно.
Также в песочнице есть возможность сгенерировать рабочий код для Python и Node.JS и выполнить его в командной строке с помощью утилиты curl.

Предыдущая