Swagger-PHP для генерации файла JSON для Swagger-UI
Я пытаюсь использовать Swagger-PHP для генерации файлов JSON, чтобы я мог использовать его с Swagger-UI для автоматической документации.
Я попробовал ссылку: - https://github.com/zircote/swagger-php
Также я попытался обойти эту документацию по адресу http://zircote.com/swagger-php/installation.html
Но моя тяжелая удача, я не могу это осуществить.
Я могу правильно установить композитор. Также пакет Swagger-PHP установлен правильно.
Но проблема в том, что я не могу использовать / понимать предоставленные ими тестовые примеры.
Так что, если кто-то работал вокруг, пожалуйста, помогите!
Заранее спасибо!!
2 ответа
Вы просто помещаете комментарии или аннотации в ваш код, пример модели:
/**
* @SWG\Model(
* id="vps",
* required="['type', 'hostname']",
* @SWG\Property(name="hostname", type="string"),
* @SWG\Property(name="label", type="string"),
* @SWG\Property(name="type", type="string", enum="['vps', 'dedicated']")
* )
*/
class HostVps extends Host implements ResourceInterface
{
// ...
}
Пример контроллера:
/**
* @SWG\Resource(
* basePath="http://skyapi.dev",
* resourcePath="/vps",
* @SWG\Api(
* path="/vps",
* @SWG\Operation(
* method="GET",
* type="array",
* summary="Fetch vps lists",
* nickname="vps/index",
* @SWG\Parameter(
* name="expand",
* description="Models to expand",
* paramType="query",
* type="string",
* defaultValue="vps,os_template"
* )
* )
* )
* )
*/
class VpsController extends Controller
{
// ...
}
Затем в консоли:
php swagger.phar ./your-code-source/ -o ./directory-for-output-files
Затем свяжите сгенерированные файлы в Swagger UI. Это помощь?
Кстати, эта документация: http://zircote.com/swagger-php/annotations.html является неполной. Лучше полагаться на ошибки парсера, например:
php swagger.phar ./skynode-api/api/ -o ./foo
Swagger-PHP 0.9.0
-----------------
[INFO] Skipping unsupported property: "foo" for @Swagger\Annotations\Property, expecting "name", "description", "type", "format", "items", "uniqueItems", "required", "minimum", "maximum", "enum", "defaultValue", "_partialId", "_partials" in HostVps in /home/kane/some-dir/some-file.php on line 3
РЕДАКТИРОВАТЬ: Swagger 2.0 имеет довольно хорошую спецификацию на GitHub
Кстати, рассмотрите возможность использования Swagger Editor для создания файла спецификации API (json/yaml) для использования в Swagger UI. Потому что встроенная документация SWG в php-файлах просто ужасна, и у вас нет поддержки автозаполнения в IDE.
В последнее время я боролся с этим и увидел некоторые различия, и мне удалось заставить его работать, и я хотел, возможно, сократить кого-то еще:
// In the controller
/**
* (other swagger stuff like @SWG\Put, etc...)
* @SWG\Parameter(name="type",in="path",description="project|task",
* required=true, type="array",
* @SWG\Items(type="string"),
* default="project",
* enum={"project", "task"}),
* (next @SWG\Parameter or closing paran, etc)
*/
Ранее я получал эту работу с enum в модели и ссылкой @SWG\Items на нее, но не сохранил этот код (я просто возился), и я не могу его вернуть. Я даже вижу, что ранее проголосовал за вопрос и принял ответ! Но вышесказанное - единственный способ заставить его работать прямо сейчас, и это лучше, чем ничего.