无法调用 Apigility 中的特定实体
Can't call a specific entity in Apigility
我无法通过 GET 在 Apigility 中调用我的端点。我有以下配置:
'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(方法不允许)。
我配置的整个路由是:
'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 是:
'route_name' => 'api/rest/test',
这不是问题所在。但似乎应用程序想要分派 fetchAll 方法(作为集合)而不是 fetch 方法(作为实体),我不知道为什么。
Now I try to open the url /api/rest/test in my browser and get a 405 (method not allowed).
你的URL实际上是在调用一个集合。为了调用实体,您需要指定一个实体 ID,即:/api/rest/test/1
只要 URL 末尾没有 ID,Apigility 就会匹配收集路由,根据您的配置,绝对不允许使用 http 方法进行收集。
我无法通过 GET 在 Apigility 中调用我的端点。我有以下配置:
'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(方法不允许)。
我配置的整个路由是:
'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 是:
'route_name' => 'api/rest/test',
这不是问题所在。但似乎应用程序想要分派 fetchAll 方法(作为集合)而不是 fetch 方法(作为实体),我不知道为什么。
Now I try to open the url /api/rest/test in my browser and get a 405 (method not allowed).
你的URL实际上是在调用一个集合。为了调用实体,您需要指定一个实体 ID,即:/api/rest/test/1 只要 URL 末尾没有 ID,Apigility 就会匹配收集路由,根据您的配置,绝对不允许使用 http 方法进行收集。