2013-05-07 24 views
0

根據我已閱讀的有關RESTful服務的內容,其中一個應該能夠使用對帶有記錄ID的URL的請求獲取「資源」(如數據庫記錄)最後,像這樣:localhost/my_records/1。訪問這樣一個URL將顯示一個網頁,其中包含ID爲1的記錄信息。帶有PHP的類似REST的URL

我需要在PHP/Apache/MySQL中實現類似的東西,但我對這種語言還比較陌生。我能夠創建的最多的是 localhost/my_records/index.php?id = 1。

創建[「/ id」] url似乎需要創建該文件夾。有什麼辦法可以做到這一點?

+2

這聽起來像你想做URL重寫。查找Apache的mod_rewrite。一個例子就是codeigniter,它能夠將http://www.mysite.com?id=1改寫爲http://www.mysite。com/id/1並達到相同的結果。 – Chad 2013-05-07 19:38:51

+0

[Slim Framework](http://www.slimframework.com/)可能對你很方便。 – 2013-05-07 19:56:01

回答

1

您可以使用任何種類的URL獲得REST式服務,您不需要在最後使用該ID做一個URL,但是這種類型的URL更好的方便和良好的設計原則。

否則這種類型的URL也被稱爲「友好URL」,大多數PHP框架都提供這種類型的URL,例如Symfony,Code Igniter,Laravel ......提供此功能。

如果你想在不使用任何PHP框架此類URL,可以檢查這個答案和響應How to create friendly URL in php?

在我看來,要實現良好的REST API一個很好的框架代碼點火器+菲爾鱘魚休息客戶。更多信息:

+0

謝謝。 mod_rewrite完美適合我需要做的事情。我現在真的沒有時間學習新的框架,所以最簡單的解決方案就可以做到。我將研究更遠的框架。謝謝! – tutiplain 2013-05-08 19:57:42

0

配置您的網絡服務器以通過單個PHP腳本路由所有請求。這將允許您解析檢索到的URL。由於您使用的是Apache mod_rewite

​​

這將路線的路徑/(如果您想要的任何路由到該腳本刪除線2和3)通過index.php文件不存在的文件的所有請求。在腳本中,您可以通過以下方式訪問訪問的URL:$_SERVER['REQUEST_URL']

+0

謝謝!不過,我仍然需要學習正則表達式。 – tutiplain 2013-05-08 19:58:55

0

從本質上說,你在找什麼是通常被稱爲請求路由東西。通常這是通過在服務器級別和應用程序級別的配置組合來實現的。

  • 某種服務器重定向(使用重寫規則或FallBackResource指令),它會將所有的請求(或某種形式的請求),以單一的應用程序資源是處理它。
  • 解析URI和HTTPS操作(GET,POST,PUT,DELETE,HEAD等)並確定如何路由請求(即哪個控制器應該處理它)的應用程序邏輯
  • 通常情況下有某種根據請求標題中請求的格式(即JSON/XML/HTML)格式化響應的邏輯

有許多PHP框架可用於執行此操作,至少您可以尋找指導如果不是完全使用它們)。