jacksparrow
@jacksparrow

Rest Api на yii2 в формате Json?

Решил сделать в рамках сайта, контроллер отвечающий за rest действия.
Как мне свести все ответы к одному формату, который просто возвращал бы данные и без лишней информации, но в рамках одно контролера. Текущим способом
public function behaviors()
    {
       $behaviors = parent::behaviors();
       $behaviors['authenticator'] = [
            'class' => QueryParamAuth::className(),
       ];
        $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
        return $behaviors;
    }

Я получил вот такой результат, что является избыточной информацией для пользователя
{"name":"Unauthorized","message":"You are requesting with an invalid credential.","code":0,"status":401,"type":"yii\\web\\UnauthorizedHttpException"}

Как мне в рамках только одного контролера, полностью контролировать вывод ошибок, но не трогать остальной проект?
  • Вопрос задан
  • 2310 просмотров
Пригласить эксперта
Ответы на вопрос 2
Terminaft
@Terminaft
Попробуйте в файле index поставить YII_DEBUG = false.

Можно еще попробовать сделать так, как написано тут, но это сразу для всех контроллеров.
Ответ написан
@airatkh
www.airat.info
public $serializer ='frontend\modules\v2\component\CustomSerializer',

    public function actionSpecialFoApi()
    {

     if(rest_responce == true) {
        /** @var \frontend\modules\v2\component\ApicoSerializer $serializer */
        return Yii::createObject($this->serializer)->serialize($data);
        return; //возможно это может надо???
    }
}


Тут написано
yii\rest\Serializer
Serializes the given data into a format that can be easily turned into other formats.
You may override this method to support more object types.

Код не тестировал, сори)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы