簡體   English   中英

RESTful PHP框架,支持資源,方法和格式

[英]RESTful PHP Frameworks that support Resources, Methods, and Formats

似乎有各種各樣的PHP框架聲稱RESTful設計模式。

我正在尋找一個能夠很好地為這三個項目(或它們的等價物)提供可靠解決方案的框架。

1.資源請求

首先要做的是能夠處理資源解析的URL。

/path/to/resource = controller.action()

2.請求方法

第二件事是處理不同類型的請求方法。

GET /path/to/resource  = controller.get()
POST /path/to/resource = controller.post()

如果沒有請求方法匹配,可能會回退到通用處理程序。

GET /path/to/resource  = controller.action()
PUT /path/to/resource  = controller.action()
POST /path/to/resource = controller.action()

3.響應格式

最后,我看到人們將格式附加到URL的末尾,以幫助框架知道預期的響應類型。

/path/to/resource.html
/path/to/resource.json

人們在標題中傳遞響應格式或作為URI參數( ?format=json )的其他方式。

這些是必須涵蓋的三個項目。 但是,它們不必像我剛剛展示的那樣處理 - 這些只是示例。

我一直在研究類似的框架,但在PHP世界中似乎沒有太多進展。 是一個關於PHP REST框架的相關問題。

Recess看起來很有趣,我發現Zend Framework的新REST控制器和路由器非常有用。 還開始在Zend組件之上實現更簡單的方法 基本上你注冊了一堆視圖渲染器(HTML,JSON和簡單形式的XML支持開箱即用,通過接受頭解析或用format =?參數覆蓋它)和身體解析器(Web Foms和JSON啟用) )並基於此界面:

interface Feathry_Rest_Resource
{
    public function index($params = null);
    public function get($id, $params = null);
    public function post($data, $params = null);
    public function put($data, $id = null, $params = null);
    public function delete($id, $params = null);
}

每個方法返回一個普通數組或對象(使用toArray方法),您可以創建一個RESTful資源。 優點是,您的資源完全與任何Representation分離。 他們甚至不必知道他們是通過HTTP使用的,只要他們遵循界面即可。 它仍然非常alpha,並且它似乎沒有太大的興趣,但它確實有效,所以也許你想嘗試一下。

Recess有一個有趣的方法,使用注釋來定義路由。

如果您使用的是PHP 5.3,那么Tonic是一個非常輕量級的框架,專注於REST。 它還使用類似於Recess的樣式,使用docblocks進行路由。

我個人使用Zend Framework和Zend_Rest_Route的自定義版本。

這些中的每一個都在某種程度上提供了一些響應格式的處理,允許您不僅基於您描述的方法提供內容協商,而且通過使用Accept頭字段來確定客戶端將理解的格式。 我在ZF中的個人方法是使用具有JSON,XML,YAML等自定義序列化器的數據結構(基本上是ArrayObject ),並讓控制器確定要使用的最佳輸出格式。

暫無
暫無

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

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