API
.apiОписание API: системы → группы → методы с Request/Response/Notify и типизированными полями. На выходе — клиенты, сервер, документация.
Шпаргалка по синтаксису
Файл для генерации API
Секция Errors содержит описание сетевых ощибок
Секция Structs содержит описане кастомных структур
Секция API содержит описание систем, групп методов и самих методов
Стркутура Errors
Errors - В начале строки говорит о переходе к секции
Error: %ERROR_NAME_WITH_BASE_DESC% = "Текст ошибки" // %comment%
Стркутура Structs
Structs - В начале строки говорит о переходе к секции
Struct: %StructName%: %BaseStruct% // %comment%
%fieldType% %fieldName% = %fieldDefValue% // %comment% - Обязательный отступ с начала строки. Описание параметров см. API
Стркутура API
API - В начале строки говорит о переходе к секции
System: %system_name% // %comment% - В начале строки. Создание системы для API
Group: %Group name or group comment% // %comment% - В начале строки. Создание группы методов
Если появился метод, а группа не задана - формируется специальная группа по названию системы %System Name%
Method: %method.submethod.do_it% // %comment% - В начале строки. Создание метода с указанным названием, рекомендуется разделять разделы метода через ".", а сложное название части метода писать snake-case'ом
%MessageType%: %BaseStruct% // %comment% - Обязательный отступ с начала строки
%MessageType% - Тип сообщения описываемой части метода:
Request - Запрос
Response - Ответ
Notify - Уведомление
: %BaseStruct% - Не обязательно, но если есть - еквивалентен EXT_TYPE, т.е s<%%> - указывает структуру из секции Structs на базе которой будет формироваться данный тип сообщения или m<%%,%%,%%> - На базе другого сообщения
%fieldOpt% %fieldType% %fieldName% = %fieldDefValue% // %comment% - Обязательный отступ с начала строки, желательно, что бы был больше чем у %MessageType%
%fieldOpt% - Не обязательно. Параметр отвечает за обязательность параметра при формирования метода.
Отсутствует или равен "o" - опционально, "r" - обязателен.
"x" - данный парамерт будет присвоен data текущего сообщения
%fieldType% - Обязательно. Тип поля:
Базовые типы (BASE_TYPE):
dyn - dynamic
obj - Object
str - String
bln - bool
int - int
dbl - double
num - num
Группированные сложные типы, такие как список или ключ-значение (G_TYPE):
lst<T> - List<T> где T - Любой тип, как из BASE_TYPE, так и EXT_TYPE
map<T1,T2> - LinkedHashMap<T1, T2> где T1 - Любой тип из BASE_TYPE; Т2 - Любой тип, как из BASE_TYPE, так и EXT_TYPE
Прочие типы (EXT_TYPE):
s<%StructName%> - Ссылка на структуру, берется название структуры
m<%system_name%,%method.submethod.do_it%,%MessageType%> - Ссылка на метод, на базе которого будет строится текущий тип
%fieldName% - Обязательно. Название поля в camelCase'е
= %fieldDefValue% - Не обязательно. Значение по умолчанию, которое будет подставляться в метод вызова
Источник DSL
Результат
Нажми Сгенерировать, чтобы отправить DSL на Dart-sidecar и получить сгенерированные файлы.
WS-лог