0

另一个与 Zend Framework 2 的 RESTful Web 服务相关的问题。令人惊讶的是,当我调用http://ehcserver.localhost/rest时,我能够获取我的 JSON 字符串,因此实现了 getList() 方法。我认为我应该能够调用http://ehcserver.localhost/rest/id/2来调用 RestController 的 get(id)-method。我收到了 404 错误,而不是 JSON 脚本。我认为我的 config.php 中的路由一定会导致这个问题。可以在github上看到代码:https ://github.com/Jochen1980/EhcServer/blob/master/module/Application/config/module.config.php

这是相关的路由:

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',
        ),
    ),
),
...
4

1 回答 1

0

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

GET - get($id) - 获取用户数据 CREATE create($data) - 创建用户数据 UPDATE - update($id, $data) - 更新用户数据 DELETE - delete($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 自动指向控制器中的 get($id)、create($data)、put($id, $data)、delete($id) 方法,基于制作的 url。

谢谢,

于 2015-03-20T06:57:15.443 回答