ubuntu, Warning: JAVA_HOME environment variable is not set Ошибка

Правим файл:

sudo nano /etc/environment

и добавляем в него строки вроде:

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
export JAVA_HOME

Путь на вашей машине может отличаться.
Чтобы узнать его посмотрите куда ведет ссылка с

which java

(с помощью ls -la)

Источник: https://askubuntu.com/a/175519

swagger Как сгнерировать HTML страницу c документацией (напр. из yaml)

Предположим, что yaml с информацией о метода вы генерировать уже уже научились и теперь нам надо перегнуть его в html.

Наиболее простым способом является (но не самым быстрым и удобным):

  1. взять сгенерированный yaml
  2. добавить его слева в область кода на https://editor.swagger.io/
  3. и далее из главного меню:
    Generate Client -> html2

    качаем получившийся html и наслаждаемся)

JsonParseException: Unrecognized token 'openapi' Ошибка при генерации документации swagger-codegen

JsonParseException: Unrecognized token 'openapi'

В ответ на команду:

java -jar swagger-codegen-cli.jar generate -i /var/www/myproject/openapi.yaml -l  php

При этом файл (openapi.yaml), который генератор должен парсить выглядит так:

openapi: 3.0.0
info:
  title: 'API'
  version: 1.0.0
paths:
  /v1/api/campaign-types:
    get:
      operationId: getUserByName
      responses:
        '200':
          description: 'Список типов компаний'

Решение

symfony The autoloader expected class ... to be defined in file Ошибка. Файл без класса

The autoloader expected class ... to be defined in file .. The file was found but the class was not in it, the class name or namespace probably has a typo in...

Ошибка возникает, когда вы просто закидываете, напр. в директорию контроллеров php-файл в котором нет класса (ну и неймспейса).

Временное решение

В моем случае в этом файле располагались аннотации всех контроллеров API, поэтому в качестве быстрого решения я добавил болванку под ожидаемый симфони класс (ну и неймспес для него), в итоге файл выглядит как-то так:

symfony Как игнорировать некоторые аннотации (doctrine vs swagger)

Ошибка вида:

An exception has been thrown during the rendering of a template [Semantical Error] The annotation ... in class ... was never imported. Did you maybe forget to add a use statement for this annotation? in .... (which is being imported from .../config/routes/annotations.yaml). Make sure annotations are installed and enabled)

Решение

В качестве решения можно использовать в любом стартовом файле проекта ( в symfony 4 можно использовать config/bootstrap.php) код, вида:

swagger Required @OA\Info() not found Required @OA\PathItem() not found Ошибки

Required @OA\Info() not found
Required @OA\PathItem() not found

Добавьте в любой из php-файлов из той папки, которую вы обходите, что-то вроде:

/**
 * @OA\Info(title="My First API", version="0.1")
 */

/**
 * @OA\Get(
 *     path="/api/resource.json",
 *     @OA\Response(response="200", description="An example resource")
 * )
 */

symfony Вывод сообщений сообщений исключений (ошибок) в формате JSON. Разные форматы для разных контроллеров

В файле:

config/routes/annotations.yaml

можно написать так:

controllers:
    resource: ../../src/Controller/
    type: annotation
api-controllers:
    resource: ../../src/Controller/Api
    type: annotation
    defaults:
        _format: json

В данном случае контроллеры из директории

../../src/Controller/Api  

в случае возникновения в них исключительной ситуации будут выводить сообщения именно в формате json.

[!] Swagger по-русски. Справочник и примеры работы (PHP)

Swagger -- средство для удобной разработки и просмотра документации к метода REST API.

Остальные материалы см. по ссылкам ниже.

Pages

Subscribe to fkn+antitotal RSS