Данная страница документация не завершена.
Актуально на версию для версии 1.2022.00.
Table of Contents
Все действия будут производиться в папке модуля, например, Abills/modules/Portal.
За пример взят модуль Portal.
...
Code Block | ||||
---|---|---|---|---|
| ||||
#********************************************************** =head2 admin_routes() - Returns available ADMIN API paths =cut #********************************************************** sub admin_routes { my $self = shift; return [ { method => 'GET', # Абсолютный путь, за которым можно будет достучаться, например billing.url/api.cgi/portal/attachment path => '/portal/attachment/', handler => sub { # Динамически подключаем# Указываем "контроллер" для API /portal/attachment/* controller require=> 'Portal::Api::admin::Attachment;', # my $Attachment = Portal::Api::admin::Attachment->new($self->{db}, $self->{admin}, $self->{conf}, { Errors => $Errors }); # Вызываем в контроллере функцию с аргументами именно для этого роута # (GET portal/attachment = get_portal_attachment) return $Attachment->get_portal_attachment(@_); }Даём ссылку на функцию-эндпойнт контроллера endpoint => \&Portal::Api::admin::Attachment::get_portal_attachment, credentials => [ # Определяем нужные параметры для авторизации. # ADMIN - API_KEY # ADMINSID - admin_sid по cookie (в том числе для api_call) 'ADMIN', 'ADMINSID' ] }, ] } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
#********************************************************** =head2 user_routes() - Returns available USER API paths =cut #********************************************************** sub user_routes { my $self = shift; return [ { method => 'GET', # Для USER API ОБЯЗАТЕЛЬНО начинаем абсолютный путь с /user/*. path => '/user/portal/menu/', handler => sub { # Динамически подключаемПодключаем "контроллер" для API /user/portal/* controller require=> 'Portal::Api::user::News;', my $User_news = Portal::Api::user::News->new($self->{db}, $self->{admin}, $self->{conf}, { Errors => $Errors }); # Даём ссылку на функцию-эндпойнт контроллера endpoint return $User_news->get_=> \&Portal::Api::user::News::get_user_portal_menu(@_); }, credentials => [ # Определяем нужные параметры для авторизации. # USER - авторизация по header, полученном с /user/login # USERSID - авторизация по cookie (в том числе для api_call) # PUBLIC - без авторизации # Тоесть, в данном случае путь может работать как и с авторизованными пользователями, так и нет. # Внутри хэндлера можно определять какой пользователь, об этом ниже. 'USER', 'USERSID', 'PUBLIC' ] }, ] } |
...