Для работы с GraphQL необходимо получить токен и обращаться через запрос: https://вашсайт/graph.micro?token=ваштокен
Отправляя тело запроса в json в таком виде
{
"input": {
"test": {
"orm": {
"table": {
"table":"seo",
"field":"title,id"
},
"where": {"w":{"id":3}}
}
},
"test2": {
"orm": {
"table": [
"menu",
"href,id,sorts"
],
"where": {"w":{"sorts":"|test.0.id|"}},
"sorts":["id","DESC"],
"lim":[5,0]
}
}
},
"output": {
"mytest": {
"title":"|test|"
},
"mytest2": {
"id":"|test2|"
}
}
}
test — в данном случае любое название на латинице к которому мы можем обращаться в самих запросах.
Orm — это способ обработки наших данных, при указании orm мы далее в ключах json обьекта используем методы orm Foton, после этого мы можем добавить еще такой же запрос к системе, в примере это test2 — это также любое название на латинице уникальное в рамках текущего запроса. И в этом запросе мы уже можем использовать данные полученные из первого запроса, например вот так |test.0.id|, так как в ответ из orm нам выдается коллекция, то мы обращаемся к элементам этой коллекции указывая согласно стандартам наследования доступ к вложенным элементам через конструкцию .ключ, в данном случае мы берем id первого элемента коллекции с индексом 0.
Также мы можем брать всю коллекцию, если она будет работать в конструкции данного запроса используя просто |test|, в случае с выводом нам не нужно задумываться над этим, так как нам просто нужно вывести данные удобным для нас образом.
За вывод отвечает ключ "output"
В этом json объекте мы также вместо ключей пишем любые уникальные имена на латинице в рамках текущего запроса.
Мы можем вывести полностью всю коллекцию |test2| или ее часть, например |test.0.id|, конечно изначально для теста пока мы не уверены, что веренет нам система необходимо получить полную коллекцию данных. Если данные не найдены, то если при обращении у нас указана вся коллекция система просто выдаст пустой обьект json, если же у нас указаны индексы система вернет ошибку.
Также для установки правил доступа используются сигнатуры контроллера модуля graphQL dev/service/micro/graph/return/class.php
$arrTable=['error404','html']; - таблицы, доступ к которым запрещен
$arrRules = ['ALTER','DELETE']; - SQL команды, которые запрещены
также в модуле запрещены следующие методы работы с orm ради безопасности и поддержания целостности системы:
'forq',
'q',
'c',
'dbdel',
'sqlDumpFile',
'structureTable',
'formatTable',
'siteDump',
'fieldTable',
'execute',
'selectId',
'columnType',
'is',
'tableField',
'copyTable',
'copyDateTable',
'copyDates',
'renameTable',
'ins',
'fileInsert',
'tableDesc',
'tableList',
'createIndex',
'dropIndex',
'back',
'cq',
'query',
'echo',
'structureTable',
'columnType'
Более полную информацию по данному и другим запросам вы можете найти в postman коллекции Foton
Важно!!! Перед работой с системой необходимо в основном файле настроек core/setting/main.php сменить настройку micro с false на true, перед этим предварительно необходимо изменить все ключи для доступа к системе, информацию об этом можно посмотреть в каждм файле setting.json каждого микросервиса в системе, например dev/service/micro/alisa/setting.json, при указании типа авторизации token, он заполняется в файле token.php, если это базовая авторизация, то доступ указывается в самом файле настроек, а также в файле .htpasswd в корне сайта и т. д., подробнее описано в разделе Авторизация документации по микросервисной архитектуре.