Функция Web.Contents() используется для получения данных из Интернета, чаще всего её используют для запросов к REST API различных сервисов.
Функция имеет ряд параметров и… скудную официальную документацию.
Поэтому некоторые аспекты использования Web.Contents() иногда вызывают вопросы.
Get-запросы.
Допустим, нам необходимо сделать запрос вида
http://API-Resurse.com/chapter?postId=1&page=25
В принципе можно не усложнять задачу и написать запрос вида:
let
Source= Web.Contents("http://API-Resurse.com/chapter?postId=1&page=25")
in
Source
Но использование дополнительных параметров может облегчить читаемость кода и иногда помочь устранить ошибки при обновлении отчёта в облаке.
Предыдущий запрос с дополнительными параметрами:
let
Source= Web.Contents("http://API-Resurse.com",
[RelativePath="chapter",
Query=[postId="1", page="25"]])
in
Source
Дополнительные параметры точно необходимы, если их значения динамические, то есть подставляются из переменных. При указании только url с использованием динамических параметров гарантированно будут проблемы с обновлением отчёта в облаке.
При необходимости можно добавить в запрос заголовок:
let
Source= Web.Contents("http://API-Resurse.com",
[RelativePath="chapter",
Query=[postId="1", page="25"],
Headers = [#"Authorization"="ApiKey",#"Content-Type"="application/json"]])
in
Source
Немного лайфхаков.
Если в запросе требуется передать один и тот же параметр, но с разными значениями:
http://API-Resurse.com/chapter?postId=1&postId=2
Запрос должен выглядеть так:
Web.Contents("http://API-Resurse.com/chapter",[Query=[postId={"1","2"}]])
Если нужно подменить базовый адрес, по которому происходит проверка авторизации в облаке, и может не работать обновление:
Web.Contents( "
http://API-Resurse.com/chapter
?part=status", [Query=[part="datablock"]])
В этом случае проверка авторизации в облаке будет осуществляться по адресу:
http://API-Resurse.com/chapter?part=status
А запрос данных будет осуществляться с адреса:
http://API-Resurse.com/chapter
?part=datablock
Статья подготовлена по материалам Интернета