簡體   English   中英

使用PHP創建RESTful API和網站

[英]Creating a RESTful API and website with PHP

我有一個我之前寫的PHP應用程序,我想添加一個RESTful API。 我還想擴展網站,使其更像是一個Rails應用程序,就您調用的URL來獲取系統中的項目。

有沒有辦法在Railsy方式中調用PHP中的項目而不創建各種文件夾和索引頁面? 如何在不使用GET查詢標記的情況下在PHP中調用信息?

如果你有某種形式的mod_rewrite,你可以使用.htaccess文件輕松完成。

如果您有這樣的事情:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

它將檢查您嘗試訪問的文件是否已存在。 (假設您有一個文件hello.html,您仍然需要人們通過http://yoursite.com/hello.html訪問)

然后,如果該文件尚不存在,它將加載index.php文件,其余的URL存儲在url變量中。

這意味着您可以調用類似http://yoursite.com/pages/edit/24的內容 ,它將在url變量中加載index.php和/ pages / edit / 24。

這應該讓你開始,你不需要各種文件夾和索引頁面,只需要mod_rewrite,.htaccess文件和index.php,它將用於加載你需要的任何東西。

您還可以考慮使用其中一個內置REST支持的PHP框架,例如CakePHP

請仔細閱讀Pascal MARTIN:Zend_Rest_Server與REST完全無關。 他們只使用稍微好一點的URL做RPC,並將其稱為REST,以便它更時尚。

如果你想做REST,你需要自己做更多的工作,因為我還沒有為PHP找到一個好的REST庫。 因此,檢查$_SERVER['REQUEST_METHOD']以決定如何處理被調用資源等。

最簡單的方法可能是使用一個框架,為您提供面向REST的功能。 我知道Zend Framework使用Zend_Rest_Server類可以輕松創建REST服務器。

我想許多其他框架也是如此。

但是,如果您已經有一個不使用框架的應用程序(或者基於沒有嵌入這種類的Framework的應用程序),那么一些URLrEwriting規則就可以了。 你只需要更多的工作來將URLS /參數映射到類/方法:-(

您正在尋找的設計模式稱為前端控制器

在最簡單的形式中,您使用mod_rewrite傳遞傳入的請求並將其傳遞給單個PHP腳本。 然后使用正則表達式解析URL並將其映射到不同的響應操作。 但是,映射現有應用程序可能需要進行大量重寫。

如果你想玩這個概念我推薦Silex微框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM