3

Webアプリケーションの開発にZendFrameworkを使用していますが、Androidアプリケーション用のWebサービスを作成したいのですが、コンテンツタイプはJSONになります。

このWebサービスを作成するための最良の方法は何ですか?それはコントローラーであり、このコントローラーはアクションコントローラーを拡張します

class ApiController extends Frontend_Controller_Action

またはを使用しますZend_Json_Server 。私は少し混乱していますが、zend Json ServerはApiControllerよりも優れていますか?

4

1 に答える 1

5

Zend_Rest_Controllerについて読んでください。Zend_Controller_Actionの代わりに使用してください。とても簡単です。Zend_Rest_Controllerは、コントローラーに実装する必要のある事前定義されたアクションのリストを備えた単なる抽象コントローラーです。簡単な例として、Apiモジュールのインデックスコントローラーのように使用しました。

class Api_IndexController extends Zend_Rest_Controller 
{
    public function init()
    {
        $bootstrap = $this->getInvokeArg('bootstrap');
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(TRUE);
        $this->_helper->AjaxContext()
                ->addActionContext('get','json')
                ->addActionContext('post','json')
                ->addActionContext('new','json')
                ->addActionContext('edit','json')
                ->addActionContext('put','json')
                ->addActionContext('delete','json')
                ->initContext('json');
     }

     public function indexAction()
     {
         $method = $this->getRequest()->getParam('method');
         $response = new StdClass();
         $response->status = 1;

         if($method != null){
             $response->method = $method;
             switch ($method) {
                case 'category':
                 ...
                break;
                case 'products':
                 ...
                break;
                default:
                $response->error = "Method '" . $response->method . "' not exist!!!";
             }
         }

         $content = $this->_helper->json($response);
         $this->sendResponse($content);
     }

     private function sendResponse($content){
        $this->getResponse()
           ->setHeader('Content-Type', 'json')
           ->setBody($content)
           ->sendResponse();
        exit;
     }

     public function getAction()
     {}

     public function postAction()
     {}

     public function putAction()
     {}

     public function deleteAction()
     {}
}
于 2013-03-11T12:01:23.100 に答える