2017-03-23 10 views
0

私は残りのapiサービスを作成するためにapigility 1.4.1を使用しています。私の場合は-/users/[/:user_id]/customActionのようにzend apigilityのリソースに基づいてアクションを作成する方法

これは私のルーティングURL /ユーザー/ [/:user_idを]で

と私はそれがある特定のユーザの詳細ことを私に与え、HTTP GETメソッドを使用してユーザーIDを与えます。私は、すべてのユーザーの詳細情報を必要とするとき

と私は与えることを想定/ HTTP GETメソッドを持つユーザー

それがユーザーの作成であれば、私はHTTP POSTメソッドでリクエストのボディに/ユーザーとユーザーの詳細情報が得られます。

これは、HTTPメソッドに基づいて要求を受け取るためのルーティングとリソースクラスを作成したためです。

たとえば、1つのエンティティを持つGETメソッドの場合、それをResourceクラスにあるメソッドを取得するようにルーティングします。リクエストボディデータを持つPOSTメソッドであれば、それをResourceクラスのメソッドを作成するためにルーティングします。

しかし、

私はユーザーのようなURLをルーティング作成する必要が

/[/:user_idを]/reset_password

私はどこに私のZendのapigilityのREST APIの作成者として、それを作成する方法がわかりませんその要求を受け取り、自分のコントローラを作成して要求を受け取る場所を指定します。

誰でもこれを行うのに手伝ってください。 ありがとうございます。

答えて

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

を読みます
関連する問題