3

I using Zend Framework for Developing my web application , I want to create a Web services for an Android application , the content type will be JSON.

what is the best way to create this webservice ? is it a Controller and this Controller will extend the Action controller

class ApiController extends Frontend_Controller_Action

or to use Zend_Json_Server . I am little confused , what the zend Json Server will help better than ApiController ?

1 Answer 1

5

Read about Zend_Rest_Controller. Use it instead of Zend_Controller_Action. It very simple. Zend_Rest_Controller is just an abstract controller with a list of predefined Actions that you should implement in your Controllers. Short example, I used it like Index Controller in Api module:

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()
     {}
}
Sign up to request clarification or add additional context in comments.

5 Comments

thanks, shall i create one Rest Controller for my application or to create more than one controller , depends on the project
Welcome! In my project I use one controller. But my project very simple, and created for my own needs. You can create much controllers as you need.
But what if I want to use additional actions ? like registerAction or something like this
I use only one action and in index action check get parameter 'method'
$method = $this->getRequest()->getParam('method');

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.