Данная страница документация не завершена.
Актуально для версии 1.22.00.
...
Code Block | ||||
---|---|---|---|---|
| ||||
#**********************************************************
=head2 get_user_portal_news($path_params, $query_params)
Endpoint GET /user/portal/news
=cut
#**********************************************************
sub get_user_portal_news {
my $self = shift;
my ($path_params, $query_params) = @_;
# Не обязательно писать всю логику прямо внутри эндпоинта, как в примере с ADMIN API
# Вы можете делить логику в бизнес-функции, для сокращения использования.
# Но для простоты понимания, с самого начала лучше писать всё в эндпоинтах
return $self->_portal_menu({
# Если пользователь авторизован - в $path_params->{uid} будет UID пользователя.
# Если нет - поле будет пустое.
UID => $path_params->{uid} || '',
DOMAIN_ID => $query_params->{DOMAIN_ID},
PORTAL_MENU_ID => $query_params->{PORTAL_MENU_ID},
MAIN_PAGE => $query_params->{MAIN_PAGE},
LIST => 1
});
} |
Написание OpenAPI
Каждое API нужно описывать.
Поэтому, по нашему микрофреймворку над OpenAPI
- Файл Api/swagger/(admin|user)/paths.yaml - основа
- Папка Api/swagger/(admin|user)/paths - определения путей
- Папка Api/swagger/(admin|user)/schemas - определения схем
Файл user/paths.yaml:
Code Block | ||||
---|---|---|---|---|
| ||||
/user/portal/news: $ref: "./paths/news.yaml" |
И в ./paths/news.yaml:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
get:
tags:
- portal
summary: Список новостей
responses:
200:
description: Успешное выполнение
content:
application/json:
schema:
$ref: "../schemas/news.yaml"
security:
- USERSID: [ ] |
schemas/news.yaml:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
type: object
properties:
news:
type: array
items:
type: object
properties:
content:
type: string
example: При замовленні пакету «ABillS+» платіть X грн/міс замість X грн/міс. Підключайте ТВ-пакет «База+» і отримаєте в подарунок півроку користування послугою! Кожен місяць сплачуйте лише 50% вартості пакету. Абонплата складе всього X грн.
date:
type: string
format: date
example: 2023-01-23
id:
type: number
example: 4
importance:
type: number
example: 1
onMainPage:
type: number
example: 1
permalink:
type: string
example: special-promotion-50-2023
picture:
type: string
example: "http://192.168.99.2:9443/images/attach/portal/9700077.png"
shortDescription:
type: string
example: Тарифний план для всіх у сімї
title:
type: string
example: Акціний тариф візьми поки можеш
topicId:
type: number
example: 1
topics:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: Акції від нас
url:
type: string
example: "https://demo.abills.net.ua:9443/" |
И в конце запускаем misc/api/generate_docs.pl, и проверяем bundle_user.yaml.
И поздравляем, вы полностью разработали и описали USER API для модуля.
Практики
Поиск, сортировка, пагинация
...