0

这是我的控制器

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格式的响应

4

1 回答 1

0

您可以在配置文件中全局配置响应格式。

/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 文档的更多信息。

于 2021-03-21T10:17:47.053 回答