如何使用 Yii2 micro 更改 xml 或 json 中的响应 您可以在配置文件中全局配置响应格式

问题描述

这是我的控制器

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 的信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...