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.

Но проблема в том, что я не могу использовать/понимать предоставленные ими тестовые примеры.

Так что, если кто-то работал с этим, пожалуйста, помогите!

Заранее спасибо !!


person user1496197    schedule 03.05.2013    source источник
comment
Привет, можешь дать более подробную информацию, пожалуйста? Например, какую ошибку вы получаете. Это будет полезно.   -  person Nishat Baig    schedule 09.10.2013


Ответы (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. Это помощь?

Кстати, эта документация: 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

EDIT: Swagger 2.0 имеет довольно хорошую спецификацию на GitHub

Кстати, рассмотрите возможность использования редактора Swagger для создания файла спецификации API (json/yaml) для использования в пользовательском интерфейсе Swagger. Потому что встроенная документация SWG в файлах php просто уродлива, и у вас нет поддержки автозаполнения в IDE.

person TomaszKane    schedule 27.01.2014
comment
Было бы здорово, если бы вы могли использовать yaml редактора Swagger в аннотациях, чтобы встроенная документация не была такой уродливой? - person redgeoff; 16.09.2015
comment
как использовать файлы yaml вместо аннотаций? - person Kareem Essawy; 29.04.2020

В последнее время я боролся с этим и вижу некоторые различия, и мне удалось заставить его работать, и я хотел, возможно, сократить кого-то другого:

// 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)
 */

Раньше я работал с перечислением в модели и ссылкой на него @SWG\Items, но не сохранил этот код (я просто бездельничал), и я не могу его вернуть. Я даже вижу, что ранее проголосовал за вопрос и принял ответ! Но это единственный способ заставить его работать прямо сейчас, и это лучше, чем ничего.

person Hans    schedule 01.09.2016