问题描述
这是我的控制器
class PostController extends \yii\rest\ActiveController {
public $modelClass = 'micro\models\Post';
public function behaviors() {
$behaviors = parent::behaviors();
unset($behaviors['rateLimiter']);
return $behaviors;
}
}
它会为 CRUD 生成 API,但它以 XML 格式响应。
这里是单控制器的解决方案
public function behaviors() {
$behaviors = parent::behaviors();
$behaviors['contentNegotiator'] = [
'class' => 'yii\filters\ContentNegotiator','formats' => [
'application/json' => \yii\web\Response::FORMAT_JSON,]
];
unset($behaviors['rateLimiter']);
return $behaviors;
}
但我想要 JSON 格式的响应全局
解决方法
您可以在配置文件中全局配置响应格式。
在 /config/config.php
文件 components
部分,配置 response
以返回 json
。
'response' => [
'format' => Response::FORMAT_JSON,'formatters' => [
Response::FORMAT_JSON => [
'class' => '\yii\web\JsonResponseFormatter','prettyPrint' => YII_DEBUG,'encodeOptions' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE
]
]
],
有更多关于 Yii2 documentation 的信息。