Zend Framework 1.9.2+ Zend_Rest_Route示例

Mat*_*ner 5 rest json zend-framework zend-rest zend-rest-route

随着Zend Framework 1.9 中Zend_Rest_Route的引入(及其在1.9.2中的更新),我们现在有了一个用于路由请求的标准化RESTful解决方案.截至2009年8月,没有使用它的例子,只有参考指南中的基本文档.

虽然它可能比我想象的要简单得多,但我希望那些比我更有能力的人提供一些例子来说明在以下场景中使用Zend_Rest_Controller:

  • 某些控制器(例如indexController.php)正常运行
  • 其他人作为休息服务运作(返回json)

看起来JSON Action Helper现在可以完全自动化并优化对请求的json响应,使其与Zend_Rest_Route一起使用是理想的组合.

Mat*_*ner 6

看起来很简单.我使用Zend_Rest_Controller Abstract将Restful Controller模板放在一起.只需将no_results返回值替换为包含要返回的数据的本机php对象.欢迎评论.

<?php
/**
 * Restful Controller
 *
 * @copyright Copyright (c) 2009 ? (http://www.?.com)
 */
class RestfulController extends Zend_Rest_Controller
{

    public function init()
    {
        $config = Zend_Registry::get('config');
        $this->db = Zend_Db::factory($config->resources->db);
        $this->no_results = array('status' => 'NO_RESULTS');
    }

    /**
     * List
     *
     * The index action handles index/list requests; it responds with a
     * list of the requested resources.
     * 
     * @return json
     */
    public function indexAction()
    {
        // do some processing...
        // Send the JSON response:
        $this->_helper->json($this->no_results);
    }
    // 1.9.2 fix
    public function listAction() { return $this->_forward('index'); }

    /**
     * View
     *
     * The get action handles GET requests and receives an 'id' parameter; it 
     * responds with the server resource state of the resource identified
     * by the 'id' value.
     * 
     * @param integer $id
     * @return json
     */
    public function getAction()
    {
        $id = $this->_getParam('id', 0);

        // do some processing...
        // Send the JSON response:
        $this->_helper->json($this->no_results);
    }

    /**
     * Create
     *
     * The post action handles POST requests; it accepts and digests a
     * POSTed resource representation and persists the resource state.
     * 
     * @param integer $id
     * @return json
     */
    public function postAction()
    {
        $id = $this->_getParam('id', 0);
        $my = $this->_getAllParams();

        // do some processing...
        // Send the JSON response:
        $this->_helper->json($this->no_results);
    }

    /**
     * Update
     *
     * The put action handles PUT requests and receives an 'id' parameter; it 
     * updates the server resource state of the resource identified by 
     * the 'id' value.
     * 
     * @param integer $id
     * @return json
     */
    public function putAction()
    {
        $id = $this->_getParam('id', 0);
        $my = $this->_getAllParams();

        // do some processing...
        // Send the JSON response:
        $this->_helper->json($this->no_results);
    }

    /**
     * Delete
     *
     * The delete action handles DELETE requests and receives an 'id' 
     * parameter; it updates the server resource state of the resource
     * identified by the 'id' value.
     * 
     * @param integer $id
     * @return json
     */
    public function deleteAction()
    {
        $id = $this->_getParam('id', 0);

        // do some processing...
        // Send the JSON response:
        $this->_helper->json($this->no_results);
    }
}
Run Code Online (Sandbox Code Playgroud)