Можно ли загрузить аннотации Swagger из другого класса или файла? - PullRequest
1 голос
/ 26 февраля 2020

У меня есть следующий простой PHP метод, подобный следующему

/**
*
* (swagger annotation to be called from a different class)
*
*/
public function getApiCall()
{
  //Do something
}

, и мне нужно включить длинную документацию Swagger в аннотацию над методом, поэтому
возможно ли написать аннотацию в другом классе? и назвать ее здесь с чем-то вроде

/**
*
*call('App\Http\Controllers\testAnnotation');
*/

Основная цель - создать чистый класс без большого количества строк документации и аннотаций.

1 Ответ

2 голосов
/ 26 февраля 2020

Загрузка «аннотаций из другого класса» не имеет особого смысла. Аннотации читаются в аннотированном коде, и это их цель.

Но если вы хотите сохранить конфигурацию и код отдельно, у вас нет для использования Swagger- Php для создания файла конфигурации Swagger.

Пакет представляет собой просто удобный способ создания файла swagger.json из аннотаций кода.

Но если вы не хотите Во-первых, используйте аннотации и держите ваши классы в чистоте от посторонних настроек (что я лично приветствую), просто ... не используйте Swagger- Php и не создавайте свои собственные файлы конфигурации вне ваших классов.

Вы даже можете написать это на YAML, если вам удобнее, чем писать JSON от руки. Например: *

openapi: 3.0.0
info:
  title: 'Search API'
  version: 1.0.0
servers:
- url: 
  description: Current host server
- url: https:your-server.com
  description: Prod server
paths:
  /foo:
    post:
      summary: 'Creates a new foo'
      description: 'Builds a new Foo and makes it available to Bar'
      requestBody:
        description: 'Foo '
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Foo'
      responses:
        '201':
          description: Foo created
        '202':
          description: Foo queued, it will be eventually created.
components:
  schemas:
    Foo:
      type: object
      required:
      - name
      - size
      properties:
        name:
          type: string
        size:
          type: integer

После преобразования в JSON (для этого существует множество библиотек, или вы даже можете использовать бесплатный сервис , например, ), вы может передать полученный JSON напрямую в чванство.

Например, YAML выше разбирает этот JSON файл . Вы можете легко протестировать его, перейдя к демонстрационному экземпляру Swagger и перейдя по URL-адресу JSON в строке адреса "исследовать", и вы получите что-то вроде этого:

enter image description here

В конце концов, это не так много работы, как использование аннотаций (если вообще потребуется больше), и вы можете сохранить свои классы сущностей в чистоте от Проблемы конфигурации.

...