0

Zend Framework 2 を使用した RESTful Web サービスに関連するもう 1 つの質問です。驚いたことに、 http://ehcserver.localhost/restを呼び出すと JSON 文字列を取得できるため、 getList() メソッドが実装されています。RestControllerの get(id) メソッドを呼び出すには、http://ehcserver.localhost/rest/id/2を呼び出すことができるはずだと考えました。JSON スクリプトの代わりに 404 エラーを受け取りました。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