2016-05-14 10 views
2

アプリケーションのフロントエンドと同じルートを使用してYii2でREST Webアプリケーションを作成しようとしています。私が達成しようとしているのは、既定でhtmlを返す同じコントローラーアクションと、xmlまたはjsonを指定した場合、すなわちGET http://example/controller/actionを使用してアクションのビューに移りますが、コントローラーが要求ボディにAccept: application/jsonを指定したときjsonデータ。これは、Ruby on Railsの中で、単にこのようとしてYii2異なるフォーマット要求に応答する同じアクション

を行うことができます。

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

どのように私はYii2でこれを達成していますか?

私はQuickStart - RESTful Web Servicesのチュートリアルを試しましたが、アプリケーションに送信する要求ヘッダーが何であれ、XMLデータのみを表示するため、HTMLビューが役に立たなくなります。レスポンスの書式について

+0

フォーマッタについてのページはありますか? http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html –

+0

リクエストの本文に「同意する」と指定したとします。ヘッダーを意味しましたか? –

答えて

0

デフォルトでは、RESTfulなAPIは、両方のJSONとXMLフォーマットをサポートしています。新しいフォーマットをサポートするために、あなたはあなたのAPIコントローラクラスで、次のようなcontentNegotiatorフィルタの書式プロパティを設定する必要があります。

use yii\web\Response; 

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

response formattingについては、こちらをご覧ください。

関連する問題