Не могу вызвать конкретную сущность в Apigility - PullRequest
0 голосов
/ 04 июня 2018

Я не могу вызвать свою конечную точку в Apigility через GET.У меня есть следующий конфиг:

'router' => [
    'routes' => [
        ...
        'test' => [
            'type' => Segment::class,
            'options' => [
                'route' => '/test[/:id]',
                'defaults' => [
                    'controller' => Resource\TestResource::class,
                ],
            ],
            'may_terminate' => true,
        ],
        ...
    ],
],
'zf-rest' => [
    Resource\TestResource::class => [
        'listener' => Resource\TestResource::class,
        'route_name' => 'api/rest/test',
        'route_identifier_name' => 'id',
        'entity_http_methods' => [
            'GET',
        ],
        'collection_http_methods' => [
        ],
    ],
],

И мой ресурс выглядит так:

class TestResource extends AbstractResourceListener
{
    public function fetch($id)
    {
        return ...
    }
}

Теперь я пытаюсь открыть url / api / rest / test в моем браузере и получить405 (метод не разрешен).

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Теперь я пытаюсь открыть url / api / rest / test в своем браузере и получить 405 (метод не разрешен).

Ваш URL фактически вызывает коллекцию.Чтобы вызвать сущность, вам нужно указать идентификатор сущности, то есть: / api / rest / test / 1 Поскольку в конце URL-адреса нет идентификатора, Apigility будет соответствовать маршруту сбора и в соответствии с вашей конфигурацией, нет абсолютно никакого метода http, разрешенного для сбора.

0 голосов
/ 04 июня 2018

Весь маршрут моего конфига:

'routes' => [
    'api' => [
        'type' => Literal::class,
        'options' => [
            'route' => '/api',
        ],
        'may_terminate' => false,
        'child_routes' => [
            'rest' => [
                'type' => Literal::class,
                'options' => [
                    'route' => '/rest',
                ],
                'may_terminate' => false,
                'child_routes' => [
                    'test' => [
                    ...

Вот почему мое имя-маршрута:

'route_name' => 'api/rest/test',

Это не проблема.Но похоже, что приложение хочет отправить метод fetchAll (как коллекцию), а не метод fetch (как сущность), и я не знаю почему.

...