我已经这样配置了rest api:http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html
如何让Yii2 rest api默认输出json而不是XML?
发布于 2016-07-22 00:29:09
从您使用的客户端:
curl -i -H "Accept:application/json" "http://localhost/myendpoint"
看起来JSON应该是默认的,但是Yii2它是XML。请参见:
RESTful response how to return JSON instead of XML in Yii2?
和/或更深入地挖掘文档:http://yiiframework.com/doc-2.0/yii-filters-contentnegotiator.html
发布于 2016-07-22 02:08:55
这取决于你默认的意思。可能的选项:
Accept:
标头Accept:
标头但您的终结点不支持任何请求的格式
在第一种情况下,您只需在默认情况下为text/html
定义json。
在第二种情况下,还要添加application/octet-stream
,因为它在HTTP协议(proof、proof)中被定义为默认值。如果nginx或apache不起作用,您还可以在nginx或apache中进行适当的配置。
在第三种情况下,ContentNegotiator
将抛出异常415 Unsupported Media Type
。您也可以通过web服务器配置来处理它,但这将是错误的。也就是说,如果客户端请求了一个图像,并且只有一个图像,那么您不应该发送json,因为这对于客户端来说是不可接受的。利用HTTP报头415,将适当地通知客户端不支持该格式。
我通过API将以下配置用于我的项目:
$config = [
'as contentNegotiator' => [
'class' => \yii\filters\ContentNegotiator::className(),
'formatParam' => '_format',
'formats' => [
'application/octet-stream' => \yii\web\Response::FORMAT_JSON,
'text/html' => \yii\web\Response::FORMAT_JSON,
'application/json' => \yii\web\Response::FORMAT_JSON,
'application/xml' => \yii\web\Response::FORMAT_XML,
],
],
https://stackoverflow.com/questions/38509552
复制相似问题