Child pages
  • Туториал по написанию API для модуля

Versions Compared

Key

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

...

Code Block
languageperl
#**********************************************************
=head2 delete_portal_articles_id($path_params, $query_params)

  Endpoint DELETE /portal/articles/:id/

=cut
#**********************************************************
sub delete_portal_articles_id {
  my $self = shift;
  my ($path_params, $query_params) = @_;

  my $list = $Portal->portal_articles_list({ ID => $path_params->{id}, COLS_NAME => 1 });

  if (!($list && scalar(@$list))) {
    # Не забудьте написать этот код ошибки в словаре!
    return $Errors->throw_error(1440002, { lang_vars => { ID => $path_params->{id} }});
  }

  my $result = $Portal->portal_article_del({ ID => $path_params->{id} });
  if (!$Portal->{errno}) {
    $Attachments->delete_attachment($path_params->{id});
  }

  return $result;
}

Написание OpenAPI

Про OpenAPI

Обязательная составляющая, так как нужно разработчикам узнать, как с вашим API взаимодействовать.
У нас есть микрофреймворк с работой "сверху" над ним, чтобы учитывать нашу модульность.

Помним, что в рамках определения OpenAPI модуля есть:

  • Файл Api/swagger/(admin|user)/paths.yaml - основа
  • Папка Api/swagger/(admin|user)/paths - определения путей
  • Папка Api/swagger/(admin|user)/schemas - определения схем

Создаём файл Abills/modules/Portal/Api/swagger/admin/paths.yaml

И определяем:

Code Block
languageyml
/portal/articles:
  $ref: "./paths/articles.yaml"
/portal/articles/{ID}:
  $ref: "./paths/article.yaml"

Мы записываем базисы путей, и где они определяются.

USER API

Создание роутов

Если нужно USER API, заполняем и это:

...