在ZF上创建的网站的简单REST API实现

问题描述

我有一个存储库存的网站,我需要制作一个REST API,因为我必须放置Web组件并将数据传递给它。通讯将由JWT保护。我找到了一个非常简单的解决方案zf3-rest-api,但是由于我有一些奇怪的文件结构(我没有modules.config.php等),所以无法实现它,恐怕它不是ZF3甚至ZF2。我可以编写自定义解决方案,但不知道应该将代码放在哪里(对不起,我是前端开发人员)?在模块中?以及如何处理路由?这样我就可以通过http://example.com/api/来引用它了?

enter image description here

解决方法

这是ZF1应用程序树,ZF1具有其REST实现。

您可以获得here扩展Zend_Rest_Controller的控制器示例。假设您将其称为“ MyRestfulController”。

那么您必须注册您的休息路线,您可以在Bootstrap.php中完成

protected function _initRestRoute()
{
    $frontController = $this->bootstrap('frontController')->getResource("frontController");
    $restRouteUL = new Zend_Rest_Route($frontController,array(),[
        'default' => [
            'my-restful'
        ]
    ]);
    $frontController->getRouter()->addRoute('rest',$restRouteUL);
}

OR

如果不需要休息,而只需要返回一些JSON的API,则可以跳过Restful部分并禁用控制器中的布局(这样就不会扩展Zend_Rest_Controller),从而覆盖“ init()”方法

    public function init()
{
    parent::init();
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender();
    $this->getResponse()->setHeader("Content-type","text/json");
    
    /**
     * This is important for the helper not to exit the dispatch loop
     */
    $this->_helper->json->suppressExit = true;
}

然后采取行动

public function getMyDataAction()
{
    $data = [];

    // your filters and all the logic to populate $data

    $this->_helper->json($data);
}

请记住,ZF1有几个性能问题,主要与应该由serviceManager以及Zend_Date替换的资源配置有关。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...