URI-кодирование строки
Мне нужно отправить запрос GET. Один из параметров содержит символы запроса URL (например, ?
, &
, а также =
). Как мне URI-кодировать это в KRL перед отправкой запроса?
Вот псевдокодированная идея:
params = "key=value&key=value";
encoded_params = params.urlencode();
request = datasource:service("?data=#{encoded_params}");
2 ответа
Решение
Смотрите также http://docs.kynetx.com/docs/URI
escaped = uri:escape("a b c d"); // "a%20b%20c%20d"
original = uri:unescape(escaped); // "a b c d"
Вы можете передать строку или структуру при вызове источника данных. Когда вы используете хеш, значения хеша автоматически кодируются URL-адресом платформой.
Ваш код выше будет написан так:
rparams = {
"key1": "value1",
"key2": "value2"
};
request = datasource:service(rparams);
TaDa! Магия.
Обратите внимание, что я использовал строковые литералы в объявлении хеша, но это могут быть любые выражения, и значения будут переданы в качестве аргументов в запросе источника данных.