Платформа API + Graphql: невозможно запросить ресурс. Не найдено ни одного маршрута. - PullRequest
0 голосов
/ 04 июня 2019

Я впервые использую API-платформу (api-platform/api-pack:v1.2.0, api-platform/core:v2.4.3) в приложении Symfony 4 с поддержкой Graphql.Я пытаюсь из клиента GraphQL вызвать ресурс таким образом

{
    menu(id: "/menus/1") {
        type
    }
}

И это ошибка, которую я получаю

"No route matches "/menus/1",

Я пытался изменить IRI, но снеудачно.Это моя полная конфигурация

  • config/packages/api_platform.yaml
api_platform:
    title: 'API'
    version: '0.0.1'
    allow_plain_identifiers: true
    graphql:
        enabled: true
        graphiql:
            enabled: true
    mapping:
        paths: ['%kernel.project_dir%/src/Entity']
  • config/routes/api_platform.yaml
api_platform:
    resource: .
    type: api_platform
    prefix: /api
  • src/Entity/resources.yaml Я хочу использовать только Graphql и никаких конечных точек REST
resources:
  App\Request\Menu:
    attributes:
      messenger: true
    graphql:
      - query
    itemOperations: []
    collectionOperations: []
  • src/Request/Menu.php
final class Menu
{
    /**
     * @var string Menu type
     */
    private $type;

    /**
     * Menu constructor.
     *
     * @param string $type
     */
    public function __construct(string $type)
    {
        $this->type = $type;
    }

    /**
     * @return string
     */
    public function getType(): string
    {
        return $this->type;
    }
}
  • src/Handler/MenuRequestHandler.php
final class MenuRequestHandler implements MessageHandlerInterface
{
    /**
     * @var \App\Repository\MenuInterfaceRepository
     */
    private $repository;

    public function __construct(MenuInterfaceRepository $repository
    )
    {
        $this->repository = $repository;
    }

    public function __invoke(Menu $menuRequest): array
    {
        return $this->repository->getByType($menuRequest->getType());
    }
}
  • bin/console debug:router
------------------------ -------- -------- ------ ------------------------------------- 
  Name                     Method   Scheme   Host   Path                                 
 ------------------------ -------- -------- ------ ------------------------------------- 
  _twig_error_test         ANY      ANY      ANY    /_error/{code}.{_format}             
  app_home_home            ANY      ANY      ANY    /test                                
  api_entrypoint           ANY      ANY      ANY    /api/{index}.{_format}               
  api_doc                  ANY      ANY      ANY    /api/docs.{_format}                  
  api_graphql_entrypoint   ANY      ANY      ANY    /api/graphql                         
  api_jsonld_context       ANY      ANY      ANY    /api/contexts/{shortName}.{_format}  
 ------------------------ -------- -------- ------ ------------------------------------- 

Может быть, я упускаю что-то, что обычно очевидно.

Спасибо

...