Child pages
  • Программный вызов API

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Система даёт интерфейс максимально похожим на любой другой внешний вызов, с почти полной изоляцией.
Имеет почти полную совместимость з вызовами в базу данных с search_former

Пример

Code Block
languageperl
titleпример прямых вызовов прямые вызовы API
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
});

...

Code Block
languageperl
# Код до
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.

Любая функция на добавление должна мигрироваться ещё прощё:

...

  1. Всегда проверяйте ответ на наличие ошибки, полей errno, errstr.Проверяйте, ли после функции не берутся значения по UPPER_SNAKE_CASE, ведь Api возвращает только lower_snake_case;
  2. Проверяйте кейс ключей хэшмапы.