Формирование URL Symfony fosrestbundle

Мой файл маршрута выглядит так

#routing.yml
user:
    type: rest
    resource:     api.user.controller
    name_prefix:  api_
loan:
    type: rest
    resource:     api.loan.controller
    name_prefix:  api_

Метод API определяется как:

    /**
     * Get a single user.
     *
     * @ApiDoc(
     *   output = "AppBundle\Model\User",
     *   statusCodes = {
     *     200 = "Returned when successful",
     *     404 = "Returned when the user is not found"
     *   }
     * )
     *
     * @param int $id the user id
     *
     * @return array
     *
     * @throws NotFoundHttpException when user not exist
     */
    public function getUserAction($id)
    {
        $repo = $this->model->getRepository(User::class);
        $user = $repo->find($id);

        if (!$user instanceof User) {
            throw new NotFoundHttpException('User not found');
        }

        return $user;
    }

Я получаю URL:

api_get__user  GET   ANY   ANY   /api/{id}/user

Хотите иметь: /api/user/{id}

Как я могу это исправить, не добавляя @Route в аннотацию, потому что я использую автоматическое именование маршрутов.


person Wizard    schedule 18.09.2016    source источник


Ответы (1)


Вместо использования «name_prefix» вы можете просто использовать «prefix» в routing.yml.

методом

public function getUserAction($id) {}

и конфигурация внутри MyBundle/Resources/config/routing.yml:

user.controller:
    type: rest
    resource: "@MyBundle/Controller/UserController.php"
    prefix: 'api'

Я получаю сгенерированный маршрут:

get_user GET ANY ANY /api/users/{id}

person mickadoo    schedule 27.09.2016