我尝试使用与应用程序前端相同的路径创建一个使用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数据。
答案 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。