我正在尝试使用Yii2创建一个REST web应用程序,使用与应用程序前端相同的路由。我试图实现的是使用相同的控制器操作,默认情况下返回html,指定时返回xml或json,即GET http://example/controller/action
将带我进入操作的视图,但当我在请求体中指定Accept: application/json
时,控制器将呈现json数据。
这可以在RubyonRails中简单地完成:
respond_to do |format|
format.html
format.json {render.json: @model}
format.xml {render.xml: @model}
end
如何在Yii2中实现这一点?
我尝试过QuickStart-RESTfulWebServices的教程,但它会使我的html视图变得无用,因为无论我向应用程序发送什么请求头,它都只会呈现XML数据。
关于响应格式:
默认情况下,RESTful API同时支持JSON和XML格式。为了支持新的格式,您应该在API控制器类中配置contentNegotiator过滤器的formats属性,如下所示:
use yii'web'Response;
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_HTML;
return $behaviors;
}
阅读有关响应格式的更多信息。