Работа с Api осуществляется через метод sendApi.
Пример:
ApiResult result = await this.layout.sendApi({
"api_name": "app.catalog",
"method_name": "search",
"data":
{
"search": "product",
"page": 0,
"limit": 10,
},
});
if (result.isSuccess())
{
}Api работает по методу Bus шины данных между компонентами системы. За это отвечает системный интерфейс Runtime.BusInterface.
Его реализация доступна в layout через sendApi.
/**
* Send api
*/
async ApiResult sendApi(Map params)
{
BusInterface api = @.provider("api");
#ifdef BACKEND then
params.set("storage", this.storage.backend);
#endif
return await api.send(params);
}В реализации используется Api провайдер и вызывается метод send.
Если нужно использовать api для общения между микросервисами, то следует использовать системную шину данных и указывать название сервиса, к которому нужно обратиться.
Пример:
BusInterface api = @.provider("system_bus");
ApiResult result = api.send({
"service": "service_name",
"api_name": "app.catalog",
"method_name": "search",
"data":
{
"search": "product",
"page": 0,
"limit": 10,
},
});