zend framework 2中get()、create()、update()和delete()的RESTful路由描述

zend framework 2中get()、create()、update()和delete()的RESTful路由描述,rest,routing,zend-framework2,Rest,Routing,Zend Framework2,还有一个问题与Zend Framework 2的RESTful Web服务有关。令人惊讶的是,我在调用时能够获得JSON字符串,因此实现了getList()方法。我认为我应该能够调用RestController的get(id)方法。我收到的不是JSON脚本,而是404错误。我认为我的config.php中的路由一定会导致这个问题。您可以在github上看到代码: 这是相关的路由: return array( 'router' => array( 'routes' =

还有一个问题与Zend Framework 2的RESTful Web服务有关。令人惊讶的是,我在调用时能够获得JSON字符串,因此实现了getList()方法。我认为我应该能够调用RestController的get(id)方法。我收到的不是JSON脚本,而是404错误。我认为我的config.php中的路由一定会导致这个问题。您可以在github上看到代码:

这是相关的路由:

return array(
    'router' => array(
        'routes' => array(
            'rest' => array(
                'type' => 'Segment',
                'options' => array(
                    'route' => '/rest',
                        'defaults' => array(
                            '__NAMESPACE__' => 'Application\Controller',
                            'controller' => 'Application\Controller\Rest',
                         ),
                    ),
                    'may_terminate' => true,
                    'child_routes' => array(
                        'default' => array(
                            'type'    => 'Segment',
                            'options' => array(
                                'route'    => '/:controller[/:id][/]',
                                'constraints' => array(
                                    'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                ),
                                'defaults' => array(
                                ),
                            ),
                        ),
                    ),
                ),
                'home' => array(
                ...
更新:get(id)现在可以工作了,我将配置更改为

'rest' => array(
    'type' => 'Segment',
    'options' => array(
        'route' => '/rest[/:id]',
        'constraints' => array(
            'id' => '[0-9]+',       
        ),
        'defaults' => array(
            '__NAMESPACE__' => 'Application\Controller',
            'controller' => 'Application\Controller\Rest',
        ),
    ),
),
...

实际上,当您使用AbstractRestfulController时,允许使用以下方法

GET-GET($id)-获取用户数据 创建($data)-创建用户数据 更新-更新($id,$data)-更新用户数据 删除-删除($id)-删除数据

'tes' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/test/showtestpage[:/id]',
                     'constraints' => array(
                            'id' => '[0-9]+',
                         ),
                    'defaults' => array(
                        'controller' => 'Tes\Controller\Tes',
                        'action' => null,
                    ),
                ),
                'may_terminate' => true,
            ),
根据所生成的URL,在控制器中自动创建路由上的URL,指向get($id)、create($data)、put($id,$data)、delete($id)方法


谢谢,

我想你必须在没有
id
的情况下打电话,因为它实际上在路线中是这样编码的(
:id
是参数,不需要
id
名称)。谢谢@Aufziehvogel不幸的是跳过“id”并没有解决这个问题。如果我调用,我将得到一个404错误,消息是“请求的URL无法通过路由匹配”。现在(请参阅我第一篇文章的更新)get($id)工作,相关调用是ehcserver.localhost/rest/2