...
Code Block | ||
---|---|---|
| ||
{
# 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 - без авторизации
# Тоесть, в данном случае путь может работать как и с авторизованными пользователями, так и нет.
# Внутри хэндлера можно определять какой пользователь.
]
}, |
...