我是Zend Framework的新手(不是PHP),我需要使用Zend创建一个基于REST的API.
我已经看过使用Zend_Rest_Server的示例,但是其他来源声明已经弃用了.
我无法找到一个可以证明我应该如何构建这样一个API的实例.
使用Zend Framework,我试图在以下模式组织的资源上构建REST api的路由:
如何使用Zend_Rest_Route设置它?
以下是我在bootstrap.php文件中为users资源(users /:id)设置路由的方法:
$this->bootstrap('frontController');
$frontController = Zend_Controller_Front::getInstance();
$restRoute = new Zend_Rest_Route($frontController);
$frontController->getRouter()->addRoute('default', $restRoute);
Run Code Online (Sandbox Code Playgroud)
[据我所知,这是一个捕获所有路由,因此users/324/items/34将导致参数设置为id = 324和items = 34,并且所有内容都将映射到Users(前端模块)模型.从那里我想我可以测试items参数并在get请求中检索用户#324的项目#34.] <===我刚刚检查它并且它似乎不像那样工作:
Acessing/users/234/items/43和
var_dump($this->_getAllParams());
Run Code Online (Sandbox Code Playgroud)
在其余控制器的get动作中产生以下输出:
array(4) {
["controller"]=> string(5) "users"
["action"]=> string(3) "get"
[2]=> string(5) "items" ["module"]=> string(7) "default"]
}
Run Code Online (Sandbox Code Playgroud)
不知怎的,两个ids都迷路了......
任何人?
以下是我的模块配置文件
return array(
'controllers' => array(
'invokables' => array(
'RSMobile\Controller\User' => 'RSMobile\Controller\UserController',
),
),
// Routes for API calls
'router' => array(
'routes' => array(
'rsmobile' => array(
'type' => 'segment',
'options' => array(
'route' => '/rsmobile',
'defaults' => array(
'controller' => 'RSMobile\Controller\User',
)
),
// Child routes
'child_routes' => array(
// Route for "user" API
'user' => array(
'type' => 'segment',
'options' => array(
'route' => '/user[/:id]',
'constraints' => array(
'id' => '[0-9a-zA-Z]+',
),
'defaults' => array(
'controller' => …
Run Code Online (Sandbox Code Playgroud) 我正在Zend Framework 2上构建REST API.我想在发生任何错误时发送某些状态代码作为响应.
我在控制器下面尝试过:
$statusCode = 401;
$this->response->setStatusCode($statusCode);
return new JsonModel(array("error message" => "error description"));
Run Code Online (Sandbox Code Playgroud)
打印回显状态代码401
,但客户端应用程序200
每次都会获取状态代码.
如何将状态代码设置为特定值?
Module.php:
class Module
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:以下是响应的外观:
随着Zend Framework 1.9 中Zend_Rest_Route的引入(及其在1.9.2中的更新),我们现在有了一个用于路由请求的标准化RESTful解决方案.截至2009年8月,没有使用它的例子,只有参考指南中的基本文档.
虽然它可能比我想象的要简单得多,但我希望那些比我更有能力的人提供一些例子来说明在以下场景中使用Zend_Rest_Controller:
看起来JSON Action Helper现在可以完全自动化并优化对请求的json响应,使其与Zend_Rest_Route一起使用是理想的组合.