404所有Url的Restler错误

时间:2014-02-16 16:13:05

标签: php restler

我正在尝试为Oxwall框架创建一个用于制作API服务器的插件。我是Restler的新手,但他是Oxwall平台的开发人员。

访问网址时出现以下错误。

{
  "error": {
    "code": 404,
    "message": "Not Found"
  },
  "debug": {
    "source": "Routes.php:383 at route stage",
    "stages": {
      "success": [
        "get"
      ],
      "failure": [
        "route",
        "negotiate",
        "message"
      ]
    }
  }
}

Oxwall有自己的路由和MVC方法。下面是我如何定义路线(cmd只是一个虚拟值,使Oxwall认为它对于说/ *路线有效)

OW::getRouter()->addRoute(new OW_Route('service', 'say/:cmd', "OXWALLAPI_CTRL_Api", 'index'));

现在,当我尝试访问http://www.mysite.com/say/hello时,会收到上述404错误。

api.php:

use Luracast\Restler\Restler;

class OXWALLAPI_CTRL_Api extends OW_ActionController {

  public function __construct() {
       parent::__construct();

       $r = new Restler();
       $r->addAPIClass('Say');
       $r->handle();
   }

   public function index() {

   }

}

Say.php:

class Say {

    function hello($to = 'world') {
       return "Hello $to!";
    }

    function hi($to) {
       return "Hi $to!";
    }

}

Oxwall有自己的.htaccess文件。我已将下面的.htaccess放在插件文件夹中。

Options -MultiViews
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule mod_php5.c>
php_flag display_errors Off
</IfModule>

1 个答案:

答案 0 :(得分:0)

  • Say.php位于index.php
  • 的同一文件夹中

否则你应该在Say.php类中使用以下内容, 例如,如果您的Say.php在Test / Say.php中 在Say.php写道

<?php
namespace Test;
use stdClass;
//..... the rest of your class

在index.php中你会写

$r->addClass('Test\Say');
  • 您是否正确设置了behat.yml文件?

base_url必须指向index.php路径