如何基于zend apigility中的资源创建操作,例如 - / users / [/:user_id] / customAction

时间:2017-03-23 01:37:00

标签: rest zend-framework apigility

我正在使用apigility 1.4.1来创建我的其他api服务。

在我的情况下,这是我的路由网址 /用户/ [/:USER_ID]

当我用GET Http方法给用户ID时,它给了我一个特定的用户详细信息。

当我需要所有用户详细信息时,我想为/ users提供HTTP GET方法

如果是用户创建,那么我将使用HTTP POST方法在请求正文中提供/ users和user详细信息。

最重要的是对我来说很好,因为apigility创建了路由和资源类来接收基于HTTP方法的请求。

例如,如果它是具有单个实体的GET方法,它将把它路由到Resource类中存在的fetch方法。如果它是带有请求主体数据的POST方法,那么它将它路由到Resource类中的create方法。

但是,

当我需要像用户/ [/:user_id] / reset_password

创建路由网址时

我不知道如何使用我的zend apigility rest api creator创建它以及在何处接收该请求以及在何处创建我自己的控制器以接收请求。

任何人都可以帮我这样做。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您应该执行RPC。这是一个配置示例:

return array(
    'controllers' => array(
        'invokables' => array(
            'MyNameSpace\UserController' => 'MyNameSpace\UserController',
        ),
    ),
    'router' => array(
        'routes' => array(
            'user' => array(
                //Your REST route
            ),
            'user-reset-password' => array(
                'type' => 'Segment',
                'options' => array(
                    'route' => '/user/:user_id/reset-password',
                    'defaults' => array(
                        'controller' => 'MyNameSpace\UserController',
                        'action' => 'reset-password',
                    ),
                ),
            ),
        ),
    ),
    'zf-rpc' => array(
        'MyNameSpace\UserController' => array(
            'http_methods' => array('POST'),
            'route_name' => 'user-reset-password',
        ),
    ),
    'zf-rest' => array(
        //Your REST config
    )
);

然后你必须为你的RPC创建UserController:

namespace MyNamespace;

use Zend\Mvc\Controller\AbstractActionController;

class UserController extends AbstractActionController
{
    public function resetPasswordAction()
    {
        //Your action
    }
}

有关详细信息,请阅读docs