Child pages
  • Реализация OpenAPI (Swagger)

Versions Compared

Key

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

...

И проводится поиск за параметрами $ref, которые ведут к частям OpenAPI тех или иных субмодулей ядра и модулей системы.
За ними постепенно вставляется содержимое, которое потом генерируется в bundle_user.yaml и bundle_admin.yaml.

На основе файлов и их названия которые находятся в /schema/ (например: Abills/modules/Portal/Api/swagger/admin/schemas/article.yaml)
Будут генерироваться нативные #/components/schemas/* в бандлах (например: #/components/schemas/PortalArticle)

Примеры

Code Block
languageyml
titleпути к файлам
paths:
  $ref: "./user/user/paths.yaml"
  $ref: "../../Abills/modules/Internet/Api/swagger/user/paths.yaml"
  $ref: "../../Abills/modules/Iptv/Api/swagger/user/paths.yaml"
  $ref: "../../Abills/modules/Msgs/Api/swagger/user/paths.yaml"
  $ref: "../../Abills/modules/Abon/Api/swagger/user/paths.yaml"
  $ref: "../../Abills/modules/Paysys/Api/swagger/user/paths.yaml"
  $ref: "./user/config/paths.yaml"
  $ref: "./user/contacts/paths.yaml"
  $ref: "./user/holdup/paths.yaml"
  $ref: "./user/services/paths.yaml"
  $ref: "./user/bots/paths.yaml"
  $ref: "../../Abills/modules/Portal/Api/swagger/user/paths.yaml"

...

Code Block
languageyml
titlepaths.yaml модуля Portal
/user/portal/menu:
  $ref: "./paths/portal.yaml"
/user/portal/news:
  $ref: "./paths/news.yaml"
/user/portal/news/{id}:
  $ref: "./paths/newsId.yaml"

Рекомендации

  1. Не оставляйте схемы в admin.yaml или user.yaml.
    Старайтесь их распределять по папкам файловой структуры OpenAPI, чтобы дать возможность нативно сгенерировать объекты.
  2. Старайтесь в schemas которые обозначают список, ссылаться файлом на единичный экземпляр.
    Это позволит не редактировать .yaml 2 или более раза.
  3. Старайтесь не писать схемы в самом определении пути, а делить их по-компонентно.
  4. Не забывайте проверять OpenAPI на валидность с помощью Swagger Editor.