<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Не удаётся выполнить запрос к сайту Graphql.]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Не удаётся выполнить запрос к сайту Graphql. форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 14 Jul 2026 05:51:09 +0300</pubDate>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393258">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Ведущий 0 в значении $testname? Если да, возможно, стоит брать $testname в кавычки. (Кстати, как уже было сказано, имя переменной выглядит неправильно.) :global data file “{"query":"query inventory{inventory_model_field_data(general_search: " $testname**"**){entities{id}}}"}” Возможно, проблема на стороне GQL бэкенда — он не любит ведущие нули или считает, что это восьмеричное число, не знаю… А тот же самый запрос GraphQL с ведущим 0 работает через CLI или какой-то другой GraphQL-инструмент? <br />
			<i>07.05.2024 17:33:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393258</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393258</guid>
			<pubDate>Tue, 07 May 2024 17:33:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393257">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо за это. Да, я новичок в программировании, но, похоже, есть кое-какие баги, особенно в том, как инструмент Fetch работает с GraphQL. Например, я пытался сделать запрос примерно такой:<br /><br />:global url “<noindex><a href="https://web-ipv6test.sonar.rocks/api/graphql" target="_blank" rel="nofollow" >https://web-ipv6test.sonar.rocks/api/graphql</a></noindex>” &nbsp;<br />:global testname “testtest123” &nbsp;<br />:global contentType “application/json” &nbsp;<br />:global data "{\"query\":\"query inventory{inventory_model_field_data(general_search:$testname){entities{id}}}\"}" &nbsp;<br />:put ([/tool fetch url=$url http-method=post http-header-field=“Content-Type:application/json, Authorization: $authorization” http-data=$datafile mode=https output=user as-value]-&gt;“data”)<br /><br />И результат был хороший. Но когда я заменил значение переменной на что-то вроде “01020304”, начали появляться ошибки. Вся эта ситуация с ошибками graphql казалась мне бессмысленной. Я начал экспериментировать, чтобы понять, в чём проблема. Оказалось, что вся загвоздка в том, что если число начинается с нуля, возникает ошибка. Если искать, например, “1020304”, проблем не было вообще.<br /><br />Поэтому, видимо, мне придётся идти по пути с использованием docker-контейнера — кажется, это более надёжно и понятнее. <br />
			<i>07.05.2024 16:46:00, saied.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393257</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393257</guid>
			<pubDate>Tue, 07 May 2024 16:46:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393256">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Кстати, операционная команда [:deserialize from=json] – это нововведение, раньше, до появления :deserialize, твоя проблема была бы настоящим кошмаром. Но ладно, это действительно отличается от всего остального. <br /><br />Хотя то же самое можно сказать и про поддержку TCL в роутерах Cisco IOS — это было ужасно сложно и ненадёжно, ещё сложнее, чем скрипты RouterOS. Большинство новых роутеров поддерживают контейнеры, похожие на Docker, так что если у тебя уже есть рабочий код на GraphQL где-то ещё… можно попытаться запустить его через /container и таким образом обойтись без скриптов RouterOS. <br />
			<i>07.05.2024 13:18:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393256</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393256</guid>
			<pubDate>Tue, 07 May 2024 13:18:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393255">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо за это. Я ужасно разбираюсь в программировании, но RouterOS кажется чем-то совершенно иным по сравнению с тем, что я видел раньше (python, JS). Очень благодарен за помощь. <br />
			<i>07.05.2024 12:29:00, saied.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393255</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393255</guid>
			<pubDate>Tue, 07 May 2024 12:29:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393254">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Да, вот так RouterOS выводит массив, но можно использовать оператор массива "-&gt;". В RouterOS есть "индекс" с числами (например, JSON-скобки), или если это "map" с парами ключ-значение, тогда для доступа используется имя в кавычках с оператором доступа массива "-&gt;"...<br /><br />Так что, если у вас есть GQL в виде строки, её можно конвертировать с помощью [:deserialize]: # строка здесь, а результаты берутся из ([/tool/fetch ...]-&gt;"data") и сохраняются в переменную "myjson"...<br /><br />:global myjson "{\"data\":{\"inventory_model_field_data\":{\"entities\":[{\"id\":\"833\"}]}}}"<br /><br /># в версии V7.13+ :deserialize берет массив RouterOS из \$myjson &nbsp;<br />:global myarray [:deserialize from=json $myjson]<br /><br /># ТЕПЕРЬ... если просто вывести это, оно не будет выглядеть как массив &nbsp;<br />:put $myarray &nbsp;<br />#data=inventory_model_field_data=entities=id=833 &nbsp;<br /># то есть, вот как RouterOS их сжимает... Чтобы получить доступ, нужно сделать вот так: :put ($myarray-&gt;"data"-&gt;"inventory_model_field_data"-&gt;"entities"-&gt;0) &nbsp;<br /># id=833<br /><br />:put ($myarray-&gt;"data"-&gt;"inventory_model_field_data"-&gt;"entities"-&gt;0-&gt;"id") &nbsp;<br /># 833<br /><br /># Или чтобы показать, что внутри GQL это массив, [:len] даст нам количество элементов, здесь оно равно 1  <br />:put [:len ($myarray-&gt;"data"-&gt;"inventory_model_field_data"-&gt;"entities")]        <br /># 1<br /><br />Примечание: команда fetch в RouterOS тоже возвращает элемент data, так что есть два “data” в разных формах. Например: :global myjson ([/tool/fetch url=… as-value output=user] -&gt;“data”) — и этот data содержит JSON в виде строки, поэтому надо получить элемент data внутри JSON...<br /><br />Чтобы показать разницу, вот однострочник: &nbsp;<br />:put ([:deserialize from=json ([/tool/fetch url=… as-value output=user] -&gt;“data”) ]-&gt;"data"-&gt;"inventory_model_field_data"-&gt;"entities"-&gt;0-&gt;"id") <br />
			<i>06.05.2024 20:42:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393254</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393254</guid>
			<pubDate>Mon, 06 May 2024 20:42:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393253">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Да, именно так RouterOS выводит массив, но при этом можно использовать оператор «-&gt;» для работы с массивами. В RouterOS есть «индексы» с числовыми значениями (например, как в JSON — квадратные скобки), а если это «map» с ключами и значениями, то для доступа через оператор массива RouterOS «-&gt;» используются кавычки с именем ключа. Так что, если начинать с вашего GQL в виде строки, которую преобразуют через [:deserialize]: # строка здесь, а результаты берутся из ([/tool/fetch ...]-&gt;"data") и сохраняются в переменную "myjson":<br /><br />:global myjson "{\"data\":{\"inventory_model_field_data\":{\"entities\":[{\"id\":\"833\"}]}}}"<br /><br /># в версии V7.13+ :deserialize получает массив RouterOS из переменной $myjson<br />:global myarray [:deserialize from=json $myjson]<br /><br /># ТЕПЕРЬ... если просто вывести массив, он не выглядит как обычный массив<br />:put $myarray<br />#data=inventory_model_field_data=entities=id=833<br /># То есть, RouterOS так их компактно отображает... Чтобы обратиться к элементу, надо сделать так: :put ($myarray-&gt;"data"-&gt;"inventory_model_field_data"-&gt;"entities"-&gt;0)<br /># id=833<br /><br />:put ($myarray-&gt;"data"-&gt;"inventory_model_field_data"-&gt;"entities"-&gt;0-&gt;"id")<br /># 833<br /><br /># Или показать, что внутри GQL это массив — [:len] даст длину, здесь всего 1<br />:put [:len ($myarray-&gt;"data"-&gt;"inventory_model_field_data"-&gt;"entities")]<br /># 1 <br />
			<i>06.05.2024 20:35:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393253</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393253</guid>
			<pubDate>Mon, 06 May 2024 20:35:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393252">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо за помощь до этого момента. Провожу дополнительные тесты, и появляется следующая информация. Допустим, я получаю такой результат с graphql эндпоинта: {“data”:{“inventory_model_field_data”:{“entities”:[{“id”:“833”}]}}}. После десанитизации у меня получается data=inventory_model_field_data=entities=id=833. Но я хочу преобразовать это в массив, чтобы можно было взять ID, однако, что бы я ни делал, мне никак не удаётся получить этот ID. <br />
			<i>06.05.2024 18:40:00, saied.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393252</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393252</guid>
			<pubDate>Mon, 06 May 2024 18:40:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Не удаётся выполнить запрос к сайту Graphql.</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393251">Не удаётся выполнить запрос к сайту Graphql.</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Я пытаюсь использовать инструмент /fetch, чтобы запросить данные через GraphQL. Но как ни стараюсь, всегда получаю ошибку синтаксиса. Насколько я понимаю, запрос правильный, потому что он работает в CURL и Postman. Вот сам запрос. Я проверил, URL и токен доступа правильные. Для безопасности я, конечно, заменил URL и токен, но http-данные не трогал. Это просто сам запрос, который я запускаю, и я подозреваю, что где-то не хватает символа экранирования, но не могу понять, где именно:<br /><br />:put ([/tool fetch url="https://somewebsite/api/graphql" \<br /> http-method=post \<br /> http-header-field="Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiNjdhYjYxOWZiMGFmODZiNDMyNTcyOTI1ODcw<WBR/>&shy;ZGRkZTI1NTJlMGVlNzdkNjM2ZDQxNGQxYjlmOGI3NDNhNWE1MjM3MGYwZWFk<WBR/>&shy;NGVkN2NlNTgiLCJpYXQiOjE3MTMzNzU4MTQuMzcxNiwibmJmIjoxNzEzMzc1<WBR/>&shy;ODE0LjM3MTYsImV4cCI6MjE0NTkxNjgwMC4xMDM3LCJzdWIiOiIxNyIsInNj<WBR/>&shy;b3BlcyI6W119.XjbbSMlBYyioE4f2OLse6v5gDtfZS8SwL2hkI3tXSKZEokfZ-kbv5z4t-0901zY0ckNyXxjvPWRvnaSPTkfQSDEwoCykXE8R6S9oRb8LzZCxb1EsmGaM2<WBR/>&shy;wdpPwKHqqYiBsBD491rzgcWOYPAnOwx5oC7iOAKesrNsBGfRgGe1yOeN6Auz<WBR/>&shy;uZdF7ZicbD50y2XC4NTI69jfYKIQoFh0c1m4mcNWDynSeY6qWavi7RKoN2gz<WBR/>&shy;mNV8OniMIDWzOykh7_HuibosXuJ_l8MHhDQ9Py_85aWhJnZpFwCYhp2--WqMq8mZcX8QR7u54_fd20QsAQZX_DmLggeSSi_gFVhgjKnI1Hf_JcNMSpJyY<WBR/>&shy;pavyux4himsLtegHzcc9xlBTimvYJ0KTrBPi8i9xGe6ShdTwMHyrB68UC050<WBR/>&shy;dOqSm-OxxkzgLMcu2DD1PlLwoA707wIfZNT_usYrNM5ehDNqKwrUMDJ_fueqI9BwSg<WBR/>&shy;euyP07QBmebj6Z99wbIkkASraxjRHDRb1YAkdNZDTNtBIsbWBKJHPXpqmQQx<WBR/>&shy;KF44bCux-yjGQlmY5R270H-Ru8-YbD2DQv8hj08ArqiUB2-QVx-spMoa9uoV3OhXhHor7Ot558l0J9m3ZP7cTZVlXGUjK2Dwfl5XNg1U2Kvyrgo<WBR/>&shy;q57vSTA8wW55kj3dCUD4fq1eIDQgLATI" \<br /> http-data="{\"query\":\"query accountid {accounts(id:2){entities{name}}}\"}" output=user as-value]-&gt;"data")<br /><br />А вот что выводит терминал в ответ:<br /><br />{"{\"query\":\"query_accountid_{accounts(id:2){entities{name}}}\"}":{"errors":[{"message":"Syntax Error: Unexpected &lt;EOF&gt;"}]}} <br />
			<i>17.04.2024 19:57:00, saied.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393251</link>
			<guid>http://mikrotik.moscow/forum/forum57/85107-ne-udayetsya-vypolnit-zapros-k-saytu-graphql./message393251</guid>
			<pubDate>Wed, 17 Apr 2024 19:57:00 +0300</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
