2016-05-14 44 views
2

我試圖用Yii2創建一個REST Web應用程序,使用與應用程序前端相同的路由。我試圖達到的是使用相同的控制器操作,將默認返回HTML,並在指定時xml或json,即GET http://example/controller/action會帶我到動作的視圖,但是當我在請求體中指定Accept: application/json控制器將呈現json數據。Yii2響應不同格式請求的相同動作

這可以簡單地做,因爲這在Ruby on Rails的:

respond_to do |format| 
    format.html 
    format.json {render.json: @model} 
    format.xml {render.xml: @model} 
end 

如何在Yii2實現這一目標?

我試過教程QuickStart - RESTful Web Services,但它會使我的HTML視圖無用,因爲無論發送給應用程序的請求標頭如何,它都只會呈現XML數據。

+0

您是否看過關於格式化程序的頁面? http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html –

+0

你說你在請求體中指定Accept。你的意思是頭文件嗎? –

回答

0

關於響應格式:

默認情況下,RESTful API中支持JSON和XML格式。爲了支持新的格式,你應該配置contentNegotiator過濾器的格式屬性就像在你的API控制器類如下:

use yii\web\Response; 

public function behaviors() 
{ 
    $behaviors = parent::behaviors(); 
    $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_HTML; 
    return $behaviors; 
} 

瞭解更多關於response formatting

相關問題