Child pages
  • Программный интерфейс API

Versions Compared

Key

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

...

Code Block
languageperl
{
  # HTTP метод, GET, POST, PUT, PATCH, DELETE
  method      => 'POST',
  # Абсолютный путь, за которым можно будет достучаться, например billing.url/api.cgi/portal/articles
  # для USER API обязательно должно начинаться с /user/* 
  # В пути определяются основные параметры, по типу :id, :uid, которое отобразятся в пути
  path        => '/portal/articles/',
  # "Контроллер" для API /portal/articles/*
  controller  => 'Portal::Api::admin::Articles',
  # Ссылка на функцию-эндпойнт контроллера
  endpoint    => \&Portal::Api::admin::Articles::post_portal_articles,
  # Прямой хэндлер. Игнорируется, если присутствует controller и endpoint
  handler     => sub {
    # $path_params - параметры с путей
    #   если USER API и авторизация - обязательно присутствует uid
    #   если ADMIN API и uid - обязательно присутствует user_object
    # $query_params - параметры квери или боди
    #   если GET, DELETE - query параметры с URL
    #   иначе - body, form или JSON
    # $module_obj - если присутствует опция module, то это объект дополнительного загружаемого модуль.
    my ($path_params, $query_params, $module_obj) = @_
    # ...
  },
  # Дополнительный загружаемый модуль. Может сократить повторяющийся код.
  module => 'Fees',
  credentials => [
    # Параметры авторизации ADMIN API
    # ADMIN    - API_KEY
    # ADMINSID - admin_sid по cookie (в том числе для api_call)
    'ADMIN', 'ADMINSID'

    # Параметры авторизации USER API
    # USER    - через header, полученном с /user/login
    # USERSID - через cookie (в том числе для api_call)
    # USERBOT - через API Bots
    # PUBLIC  - без авторизации 

    # Тоесть, в данном случае путь может работать как и с авторизованными пользователями, так и нет.
    # Внутри хэндлера можно определять какой пользователь.
      ]
    },

...