0

我有一个查询界面,允许查询 4 ​​个可能的字段:姓名、出生年份、星座和出生状态。用户可以为这些字段中的任何一个字段提供值。我正在使用 AngularJS(此处为非物质)和 YiiFramework(物质)。

我已经看到了与此类似的问题的答案,但在大多数情况下,人们最终使用查询字符串参数。我可以在我的 urlManager 中解释这一点,但更愿意以“正确”的 RESTful 方式执行此操作。我已经看到了显示如何执行此操作的示例:

/myservice/index.php/names/jones?birthyears=&signs=leo&birthstates=maine - 表示他们没有提供出生年份

我的想法是完全通过跳过空白值的路径来做到这一点。这是一个合理的方法:

/myservice/index.php/api/modelname/names/jones/birthyears//signs/leo/birthstates/maine

如果是这样,那么我正在努力使用 urlManager 模式

array('api/find', 'pattern'=>'api/<model:\w+>/names/<names:(|\w+)>/birthyears/<birthyears:(|\d{4})>/标志/<标志:(|\w+)>/birthstates/<出生状态:(|\w+)>', 'verb'=>'GET')

当我通过上述路径时,我没有得到预期的分辨率。我相信有更好的方法来处理这个

4

1 回答 1

0

我在这里测试了它并且它有效。

您如何设置 urlManager 的参数?

urlFormat 属性设置为“路径”?

'urlManager' => array(
    'urlFormat' => 'path', // You have to leave it like that.
 //   'urlSuffix' => '.html',
    'showScriptName' => false,
    'caseSensitive' => true,
    'useStrictParsing' => true,
    'rules' => array(
       array('api/find', 'pattern'=>'<model:\w+>/names/<names:(|\w+)>/birthyears/<birthyears:(|\d{4})>/signs/<signs:(|\w+)>/birthstates/<birthstates:(|\w+)>', 'verb'=>'GET'),
       // Other rules here
    ),
),
于 2012-10-24T20:52:02.450 回答