我想創建一個restful API唯一的問題是,我無法獲得$ _REQUEST值。相同的代碼在本地主機上正常工作,但不在服務器上。這可能是由於我的htaccess代碼。當URL processApi
API調用此API的功能由URL
稱爲例如被稱爲找出功能 http://www.domain.com/file.php/api/test
現在我試圖調用test
功能是api
類
htaccess的代碼重定向我的網址
內api
類中的第一項功能是processApi
那請檢查是否測試功能存在或不
但是這裏面processApi
功能$ _REQUEST值爲null
這是發生在服務器,但在本地主機上它做工精細
這是htaccess的代碼
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ file.php?request=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ file.php [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ file.php [QSA,NC,L]
</IfModule>
這是API代碼
class API extends REST
{
private $db = NULL;
public function __construct()
{
parent::__construct();
}
public function processApi()
{
$func = strtolower(trim(str_replace("api/","",$_REQUEST['request'])));
if((int)method_exists($this,$func) > 0)
{
$this->$func();
}
else
{
$error = array('status' => '402', "msg" => 'function not exist');
$this->response($this->json($error), 402);
}
}
}
$api = new API;
$api->processApi();
通過運行此代碼到服務器上我得到了
{"status":"402","msg":"function not exist"}
只是因爲$ _REQUEST [ '請求']是空
請點我爲什麼我的get $_REQUEST['request']
= NULL。我的htaccess代碼是否給出正確的值$_REQUEST['request']
你試過'var_dump($ func)'?如果它應該像你期望的那樣是'test',那麼爲什麼你的API類沒有函數'test'呢? – 2014-11-06 08:45:40
另外,請記住,PHP不具有對PUT或DELETE請求等內容的本機支持。爲了讓她獲得數據,你需要調用'parse_str(file_get_contents('php:// input'),$ _DATA)',這會將傳遞給服務器的任何數據放在$ _DATA變量中。 – Jhecht 2014-11-06 09:31:12