【发布时间】:2014-08-29 09:07:33
【问题描述】:
我使用 Apigility 为我的 ZF2 项目生成代码连接的 REST API 包装器 - 它运行良好(除了在命令行上很容易解决的一些文件权限问题)。昨天我运行了一个作曲家更新,它将 Apigility 更新为 1.0.4,现在我的集合 GET 方法(带有签名 fetchAll($params = array()) 被一个空参数数组调用。我可以从 Firebug 控制台看到这些是仍然使用正确的参数浏览器端进行调用,因此看起来 Apigility 包装器处理已经改变了这一点。有没有人有任何知识或可以解释为什么这可能已经改变/破坏了?
我还发现,自从更新以来,我无法访问用于生成 API 包装器的 Apigility Admin UI,因为它无法加载并出现 ZF2 路由错误:
Fatal error: Uncaught exception 'Zend\Mvc\Router\Exception\RuntimeException' with message 'Part route may not terminate' in /private/var/www/vhosts/hamster.local/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/Part.php:202 Stack trace:
#0 /private/var/www/vhosts/hamster.local/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/TreeRouteStack.php(351): Zend\Mvc\Router\Http\Part->assemble(Array, Array)
#1 /private/var/www/vhosts/hamster.local/vendor/zendframework/zendframework/library/Zend/View/Helper/Url.php(100): Zend\Mvc\Router\Http\TreeRouteStack->assemble(Array, Array)
#2 [internal function]: Zend\View\Helper\Url->__invoke('zf-apigility')
#3 /private/var/www/vhosts/hamster.local/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php(399): call_user_func_array(Object(Zend\View\Helper\Url), Array)
#4 /private/var/www/vhosts/hamster.local/vendor/zfcampus/zf-apigility-admin-ui/view/zf-apigility-ui.phtml(6): Zend\View\Renderer\PhpRenderer->__call('url', Array)
#5 /private/v in /private/var/www/vhosts/hamster.local/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/Part.php on line 202
再一次,除了 Apigility 的更新失败之外,我不知道是什么原因造成的。回归到 v1.0.3 解决了这两个问题,但我希望在 1.0.4 中有一些更新的功能。
非常感谢任何帮助!
【问题讨论】:
-
检查您是否没有启用该模块两次,我在 application.config 和 development.config 中有它,它导致了这个问题。
-
fetchAll 方法上缺少的参数由 zf-rest 中新强制执行的要求解释和解决,以将模块配置中每个端点的方法参数列入白名单。这是一个简单的解决方案。 zf-apigility-admin 软件包的作者正在研究另一个问题,但目前我坚持使用旧版本。无论如何感谢您的帮助。
标签: php zend-framework2 laminas-api-tools