2013-01-07 100 views
0

我一直在考慮爲我的API實現REST實現,並遇到了Restler。我安裝了Restler 2.0,並使用Apache和php> 5.3。我的類是下面:Restler php爲所有結果返回404

Class Sample 
{ 
    function gettest() 
    { 
     return "This is a test"; 
    } 
} 

和index.php文件是:

set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/restler/'); 
require_once('path/to/Sample.class.php'); 
spl_autoload_register('spl_autoload'); 
$r = new Restler(); 
$r->setSupportedFormats('JsonFormat'); 
$r->addAPIClass('Sample'); 
$r->handle(); 

,而是使用一個.htaccess,我已經包括內部

<Directory /path/to/REST_DIR> 
    AllowOverride All 
    Options +FollowSymLinks  
    DirectoryIndex index.php 

RewriteEngine On 
RewriteRule ^$ index.php [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [QSA,L] 
Order deny,allow 
    Allow from all 

</Directory> 

在以下我的httpd.conf文件(因爲如果你有權編輯它,它應該會更快)。

每當我嘗試以下路徑:

http://www.myhost.com/REST_DIR/test/

我得到:

{ 
    "error": { 
    "code": 404, 
    "message": "Not Found" 
    } 
} 

有我丟失的東西或某種方式來更徹底地調試Restler,以確定爲什麼它可以找不到函數gettest()?

在此先感謝。

[R

回答

1

按你可以預期如果您想要的網址是http://www.myhost.com/REST_DIR/test而不是從http://www.myhost.com/REST_DIR/sample/test

導致當前的配置,變化的index.php如下

set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/restler/'); 
require_once('path/to/Sample.class.php'); 
spl_autoload_register('spl_autoload'); 
$r = new Restler(); 
$r->setSupportedFormats('JsonFormat'); //not needed JSON is the default 
$r->addAPIClass('Sample',''); // note the empty string 
$r->handle(); 
+0

感謝Luracast - 我對於似乎回想起來是一個愚蠢的問題表示歉意 - 這是漫長的一天。感謝您對本圖書館的支持和發展 - 不能等待3.0! – Ross