1

我正在尝试通过官方示例在 yii 中实现 REST api,现在我得到了很多错误而不是响应http://www.taxitaxi.kz/dispatcher/index.php/api/drivers

有人可以澄清我的问题吗?

4

1 回答 1

3

通过扩展使用 yii 的 RESTapi 实际上非常简单。然而,要让它工作,需要做的事情很少,因为它也在扩展的文档中正确说明。

您可能错过的一些重要细节可能是:

  1. 将 restfullyii 放入您的 protected/extensions 目录并确保对其具有完全的读写访问权限。很多时候,由于服务器权限,我的扩展程序无法正常工作。

  2. 确保您已正确更改UrlManager中的路由 。可能是这样的:

    'api/<controller:\w+>'=>array('<controller>/restList', 'verb'=>'GET'),
    'api/<controller:\w+>/<id:\w+>'=>array('<controller>/restView', 'verb'=>'GET'),
    'api/<controller:\w+>/<id:\w+>/<var:\w+>'=>array('<controller>/restView','verb'=>'GET'),
    array('<controller>/restUpdate', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'PUT'),
    array('<controller>/restDelete', 'pattern'=>'api/<controller:\w+>/<id:\d+>', 'verb'=>'DELETE'),
    array('<controller>/restCreate', 'pattern'=>'api/<controller:\w+>', 'verb'=>'POST'),
    array('<controller>/restCreate', 'pattern'=>'api/<controller:\w+>/<id:\w+>', 'verb'=>'POST'),
    
    '<controller:\w+>/<id:\d+>'=>'<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    
  3. 您必须通过将其更改为 ERestController来扩展您希望 api 工作的控制器类。这真的很重要!

    例子 :

       class PostController extends ERestController{ }
    
  4. 您的过滤器和访问规则需要通过在它们之前附加“_”来更改。

    前任。将 accessRules 更改为 _accessRules()

  5. 此外,如果您查看 RestController 的代码,您会看到用户名和密码基本上取自 Yii::params 的参数,因此您可以在 main.php 配置文件中更改它们,或者您可以更改身份验证方法来反映你的。

希望这可以解决您的问题,如果它没有说明显示错误的位置。

问候,

于 2013-06-01T20:52:39.967 回答