給予一定的情況下,我最初開始了我的API看起來像這樣:如何在「清理」PHP REST API後訪問查詢字符串參數?
http://myserver/api.php?action=projects
在我api.php文件我有一個簡單的if語句來檢測的動作,然後做出相應的反應:
if (isset($_GET["action"])
{
switch($_GET["action"])
{
case "projects"
dostuff();
break;
case "otherstuff"
dootherstuff();
break;
...
}
}
不過,我當然想打掃一下,這樣我就可以去這個網址:
http://myserver/api.php/projects
,並得到了相同的結果。我能做到這一點通過閱讀了以前一個SO帖子:
Using Clean URLs in RESTful API
而最終得到它通過在我的根目錄.htaccess文件,並使用重寫引擎,像這樣的工作:
RewriteEngine On
RewriteRule ^action/([^/\.]+)/?$ api.php?action=$1 [L]
這工作得很好!除了一個問題,因爲我正在使用乾淨的URL,它不再認爲GET參數存在。
我發現我可以使用 $ _SERVER ['REQUEST_URI'];
然後解析URL以獲取我的參數。雖然我開始引入多個參數,但我不明白這是如何解決的。有什麼我在這裏失蹤,還是我需要以不同的方式來看待它,並改變我如何格式化參數?
我不確定我是否清楚瞭解您的問題。你能否澄清一下哪些工作沒有成功。 – anubhava
@anubhava問題是,當我使用乾淨的網址時,全局變量$ _GET在我的api.php中是空的。不過,我仍然想訪問查詢參數,而不必分析包含整個請求字符串的$ _SERVER ['REQUEST_URI']。它能完全清除它嗎? – Bebhead
對於哪個URI,您不會獲得'$ _GET'數組? – anubhava