...
Система даёт интерфейс максимально похожим на любой другой внешний вызов, с почти полной изоляцией.
Имеет почти полную совместимость з вызовами в базу данных с search_former
Пример
| Блок кода | ||||
|---|---|---|---|---|
| ||||
use Abills::Api::Handle;
# Создаём объект работы с API
my $Api = Abills::Api::Handle->new($db, $admin, \%conf, {
html => $html,
lang => \%lang,
cookies => \%COOKIES,
# Если вы хотите получить JSON (например, для передачи в веб)
# return_type => 'json'
direct => 1
});
# GET
my $uid = 147;
my ($response, $status, $content_type) = $Api->call_api({
METHOD => "GET",
PATH => "/users/$uid",
});
# GET with query params
my $uid = 147;
my ($response, $status, $content_type) = $Api->call_api({
METHOD => "GET",
PATH => "/users/$uid",
PARAMS => \%FORM
});
# POST with body
my ($response, $status, $content_type) = $Api->call_api({
METHOD => "POST",
PATH => "/portal/newsletter",
PARAMS => \%FORM
}); |
...
| Блок кода | ||
|---|---|---|
| ||
# Код до
my $payments_list_old = $Docs->invoices_list({
%LIST_PARAMS,
%FORM,
UNINVOICED => 1,
COLS_NAME => 1,
});
# Код после
my ($payments_list_new) = $Api->api_call({
# Можно не указывать метод если это GET
METHOD => 'GET',
PATH => '/docs/invoices/',
PARAMS => {
%LIST_PARAMS,
%FORM,
UNINVOICED => 1,
COLS_NAME => 1,
}
}); |
Но, имейте ввиду - поля приходят исключительно в lower_snake_case.
Любая функция на добавление должна мигрироваться ещё прощё:
...
- Всегда проверяйте ответ на наличие ошибки, полей errno, errstr.;
- Проверяйте кейс ключей хэшмапыПроверяйте, ли после функции не берутся значения по UPPER_SNAKE_CASE, ведь Api возвращает только lower_snake_case.