NelmioApiDocBundle не генерирует документацию

Я хочу использовать NelmioApiDocBundle для автоматического создания документации. Я использовал стандартный документ Symfony для его установки и настройки: https://symfony.com/doc/current/bundles/NelmioApiDocBundle/index.html. К сожалению, когда я захожу в / api / doc, мой документ пуст.

Я использую Symfony 3.4 и NelmioApiDocBundle в версии 3.2.0.

Вот мой конфиг:

nelmio_api_doc:
    areas:
        path_patterns: # an array of regexps
            - ^/api(?!/doc$)
        host_patterns:
            - ^api\.
    documentation:
        host: 127.0.0.1
        schemes: [http, https]
        info:
            title: Thanatos API
            description: This is documentation of Thanatos
            version: 1.0.0
        security:
            - Bearer: []

И аннотации в моем контроллере (в начале я хочу видеть любые данные в моей документации):

/**
 * @Route(
 *  "/",
 *  name="thanatos_dashboard_index", 
 * )
 *
 * @SWG\Response(
 *     response=200,
 *     description="Returns the rewards of an user",
 *     @SWG\Schema(
 *         type="array",
 *         @SWG\Items(ref=@Model(type=Reward::class, groups={"full"}))
 *     )
 * )
 * @SWG\Parameter(
 *     name="order",
 *     in="query",
 *     type="string",
 *     description="The field used to order rewards"
 * )
 * @SWG\Tag(name="rewards")
 * @NelmioSecurity(name="Bearer")
 */
public function indexAction()
{
    return $this->render("@AppThanatos/Dashboard/index.html.twig");
}

В / api / doc я вижу "Операции не определены в спецификации!". Что я делаю неправильно?


@ОБНОВИТЬ

Я только начинаю пользоваться саами: http://symfony.com/projects/sami

3 ответа

Ресурсы обычно устанавливаются композитором при любом командном событии (обычно post-install-cmd или же post-update-cmd) вызывает ScriptHandler::installAssets скрипт. Если вы не настроили этот скрипт, вы можете вручную выполнить эту команду:

php bin/console assets:install --symlink

У меня такая же проблема. Работая на моем Mac, я всегда имею ERR_EMPTY_RESPONSE (используя Chrome), но в производственной среде та же самая конфигурация работает отлично.

Единственная разница была в Xdebug, я пытался отключить модуль и теперь все работает.

Попробуй это:

замещать

 * @Route(
 *  "/",
 *  name="thanatos_dashboard_index", 
 * )

От

 @Rest\Get("/getVehicles")

И, в вашем контроллере действий, вернуть массив или объект, как это:

    $em = $this->getDoctrine();
    return $em->getRepository('AppBundle:Vehicle')->findAll();
Другие вопросы по тегам