Yii2响应不同格式请求的相同操作

时间:2016-05-14 02:52:10

标签: php ruby-on-rails json yii2 response

我尝试使用与应用程序前端相同的路径创建一个使用Yii2的REST Web应用程序。我想要实现的是使用默认返回html的相同控制器操作,并在指定时使用xml或json,即GET http://example/controller/action会将我带到操作的视图但是当我在请求体中指定Accept: application/json,控制器将呈现json数据。

这可以像在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数据。

1 个答案:

答案 0 :(得分:0)

关于回复格式:

  

默认情况下,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;
}

详细了解response formatting