Структура микросервисов
Микросервисы распологаются по адресу:
dev/service/
В директории event находятся json файлы очереди, в директории log находится файл key.json — сгенерированный ключ доступа, после получения рекомендуется его удалить.
В директории request находятся логи запросов по методам
event — события обработки очереди, nomethod — если метод не подошел ни под один из стандартных
В директории micro находятся все микросервисы нашей системы.
Setting.json — основной файл настроек микросервиса:
{
"auth":{
"format":"xml",
"log":false/true,
"event":"event",
"name":"service",
"arg":[{
"model":"html",
"table":"seo",
"methods":{"echo":{"data":true}},
"format":"X"
}],
"services":
{
"servis1":
{
},
"servis2":
{
}
}
}
Авторизация:
всего три типа авторизации: базовая авторизация, по ключу и по токену
базовая авторизация:
Лежат в файле /.htpasswd
"auth":{
"login":"ваш логин",
"pass":"пароль",
"realm":"ключ для сессии",
"type":"base"
},
Для запроса передаем в базовой авторизации пароль и логин
Авторизация по ключу:
Для генерации ставим в настройках
"auth":{
"key":"новый ключ",
"type":"key"
}
Запускаем микросервис
Переходим в /dev/service/log/key.json
Копируем хеш ключа и удаляем файл с ключом
сохраняем новые настройки
"auth":{
"key":"ключ",
"type":"pass",
"secret_key":"хеш ключа"
},
для запроса передаем secret_key=хешключа
Авторизация по токену:
"auth":{
"realm":"token",
"type":"token"
},
Создаем файл токена token.php в корне директории микросервиса
Создаем ключ например зависящий от дня или часа
$token = date(«Ymd»).’mytoken’
при запросе передаем get параметр token
Формат вывода:
свой тип можно добавить в настройках $arr[route] /core/setting/custom.php
Для того, чтобы ваш формат заработал необходимо добавить файл в директорию /dev/service/micro/api/return/format/
ваш_формат.tpl или ваш_формат.php — например json.tpl
В файле tpl для вывода используем конструкцию @{data} содержащую строку данных для вывода, а также можно использовать все конструкции шаблонизатора Foton,
В файле php выводим переменную $data, например вот так
События event:
Для работы с событием data необходимо наличие метода data в контроллере микросервиса
dev/service/micro/вашмикросервис/return/class.php
<?
namespace Micro;
class Название_микросервиса_как_директории{
public $core;
public function __construct()
{
$this->core = new \Foton\Core;
}
public function event($arr){
return $arr;
}
public function arg($arr){
return $arr;
}
public function input($arr){
return $arr;
}
public function post($arr){
return $arr;
}
public function get($arr){
return $arr;
}
public function data($param){
$event = $param->event;
$get = $param->get;
$post = $param->post;
$arg = $param->arg;
$input = $param->input;
}
}
Методы get,post,input,event,arg — необязательные, но для получения доступов к get,post параметрам необходимо создать методы и обращаться из метода data к соответствующим обьектам get,post, для получения тела запроса соответственно необходимо создать метод input и обратиться к свойству input, для получения аргументов из настроек arg — соответственно неоходим метод и свойство arg, но если этот микросервис также возможно будет использовать другие сервисы укажите event — он соберет в зависимости от запроса тело запроса, аргументы, get и post данные в один массив данных
Событие api — для этого события необходимо указать массив настроек arg содержащий параметры вызова:
"arg":[{
"model":"модель",
"table":"таблица",
"methods":{"echo":{"data":true}},
"format":"формат X или J или O"
"method":"метод вызова",
"page":"0",
"count":"1",
"where":{"id":5},
"id":"1",
"key":"demo",
"secret_key":"$2y$10$eZF/hrVohInhNB73CIW6/O3wX/px5VNMnGNt/D40MdhPd2SWgIFzK"
}],
Работа с Event
Для создания микросервисной архитектуры используется хореография, то есть каждый микросервис самостоятельно запускает другие микросервисы в очередь.
Для запуска очереди достаточно обратится к all.micro через CLI — php foton micro 1 0 — за один этап обработается один микросервис начиная с 0
Для создания такого микросервиса необходимо в настройке setting.json создать массив servers
"services":
{
"servis1":
{
"auth":{
},
"host":"хост, //например http://сайт/имямикросервиса.micro или main — если микросервис на вашем сервере",
"event":"событие",
"name":"имямикросервиса",
"log":true/false,
"format":"формат",
"function":"функция setting"
"where":["функция проверки,значение"],
"rollback":"функция rollback"
"arg":[{
}]
}
}
Функция setting может также устанавливать время и размер обработки данных
<?php
public function setting($setting){
$setting['arg'][0]['count'] = 5;
$setting['arg'][0]['method'] = 'list';
$setting['date'] = "2025-08-12";
$setting['count'] = 2;
return $setting;
}
Важно!!! Перед работой с системой необходимо в основном файле настроек core/setting/main.php сменить настройку micro с false на true, перед этим предварительно необходимо изменить все ключи для доступа к системе, информацию об этом можно посмотреть в каждм файле setting.json каждого микросервиса в системе, например dev/service/micro/alisa/setting.json, при указании типа авторизации token, он заполняется в файле token.php, если это базовая авторизация, то доступ указывается в самом файле настроек, а также в файле .htpasswd в корне сайта и т. д., подробнее описано в разделе Авторизация данной документации.