1

私は安らかな zend-API フレーム作業に取り組んでいます。問題は、リクエストが投稿されたときに、コントローラーからデータを処理して別のクラスに取得し、処理された出力をコントローラーに返す方法の概念がないことです。つまり、以下の putAction 関数を実装する最良の方法

public function putAction()
    {     
        $resource = $this->_getParam('resource');
        $this->view->resource = $resource;
        //$requests = $this->getRequest();

        switch (true) {
            case (strstr($resource, 'account')):
               $response = $this -> do_post_request($requests);
               $resource = "You are accessing account";
                break;
            case (strstr($resource, 'property')):
                           $response = $this -> do_post_request($requests);
               $resource = "You are accessing  property";
                break;
        case (strstr($resource, 'autos')):
                           $response = $this -> do_post_request($requests);
               $resource = "You are accessing  autos";
                break;
            default:
                 $resource = "The specified resource is not available please check the api manual for available resources";
                break;
        }
        $this->view->message = $response;
        $this->_response->ok(); 
    }

応答は、他のクラスの他の関数によって処理された後に収集されます。$response = $this -> do_post_request($requests); を使用する場合: リクエストを処理してレスポンスを生成するために、他のクラスの構造はどのようになるでしょうか。

4

1 に答える 1

3

標準的な方法は、リソースごとに個別のコントローラーを用意することです。次のように、application.ini ファイルで設定した名前空間「Api_」を持つ api というモジュールがあるとします。

autoloadernamespaces = "Api_"

次に、api モジュール フォルダーに次のような 3 つのコントローラーが必要です。

class Api_AccountController extends Zend_Rest_Controller {
    public function init()
    {
    }
    public function getAction()
    {
    }
    public function postAction()
    {
    }
    public function putAction()
    {
    }
    public function deleteAction()
    {
    }
}

他は明らかに Api_AutoController、Api_PropertyController です。次に、Rest リクエストに使用するモジュールを Zend に指示する必要があります。application.ini ファイルで:

routes.api.type = Zend_Rest_Route
routes.api.defaults.module = api
routes.api.defaults.controller = api
routes.api.api = auto,account,property

Zend は、GET http://yourapplication.com/auto/:idのようなリクエストに自動的に応答するようになり ました。ここで、:id は auto の一意の識別子です。これは Rails ではないので、当然のことながら、Api_AutoContoller の getAction() メソッドにコードを記述して、データベースにクエリを実行し、id :id などの auto に関する情報を返す必要があります。次のいずれかを実行できます。

(1) id パラメータを明示的にします: [ApplicationURL]/auto/id/123/color/blue (2) 他のパラメータをリクエスト本文に含めるか、URL に追加します: [ApplicationURL]/auto/123?color=青い

注: これらすべてを別のモジュールに押し込む必要はありません。アプリケーションが小さく単純な場合、Api に別のモジュールを使用する意味がない場合があります。しかし、これは私が職場のプロジェクトで成功を収めて使用したセットアップです。

于 2012-07-22T13:25:19.497 に答える