обработка ошибок в yii2 rest api не работает должным образом - PullRequest
0 голосов
/ 16 июня 2019

что-то не так с моим кодом, я думаю, вот мой контроллер


namespace frontend\modules\v1\controllers;
use frontend\modules\v1\models\BrandApi;
use yii\rest\ActiveController;

class BrandController extends ActiveController {

    public $serializer = [
        'class' => 'yii\rest\Serializer',
        'collectionEnvelope' => 'results',
    ];

    public $modelClass = 'frontend\modules\v1\models\BrandApi';

    public function behaviors() {
        $behaviors[] = [
            'class' => \yii\filters\ContentNegotiator::className(),
            'formats' => [
                'application/json' => \yii\web\Response::FORMAT_JSON,
            ],
        ];
        // $behaviors['authenticator'] = [
        //  'class' => \yii\filters\auth\HttpBearerAuth::className(),
        // ];

        // $behaviors['access'] = [
        //  'class' => \yii\filters\AccessControl::className(),
        //  'only' => ['list'],
        //  'rules' => [
        //      [
        //          'actions' => ['list'],
        //          'allow' => true,
        //          'roles' => ['@'],
        //      ],
        //  ],
        // ];

        $behaviors['verbs'] = [
            'class' => \yii\filters\VerbFilter::className(),
            'actions' => [
                'list' => ['get'],
            ],
        ];
        return $behaviors;
    }

    public function actionList() {
        return ['success' => true, 'results' => BrandApi::find()->all()];
    }
}

Я изменил ationIndex на actionList, потому что я не получил результат "успеха"

поэтому если я введу неправильную ссылку, я получу ответ в формате html, а не в формате json

enter image description here

вот мой конфигурационный файл в модуле API

<?php
return [
    'components' => [
        'formatters' => [
            \yii\web\Response::FORMAT_JSON => [
                'class' => 'yii\web\JsonResponseFormatter',
                'prettyPrint' => true,
                'encodeOptions' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE,
            ],
        ],
        // 'response' => [
        //  'class' => 'yii\web\Response',
        //  'on beforeSend' => function ($event) {
        //      $response = $event->sender;
        //      if ($response->data !== null && Yii::$app->request->get('suppress_response_code')) {
        //          $response->data = [
        //              'success' => $response->isSuccessful,
        //              'data' => $response->data,
        //          ];
        //          // $response->statusCode = 200;
        //          'http_response' = $response->statusCode;
        //      }
        //      $response->data = [
        //          'success' => $response->isSuccessful,
        //          'data' => $response->data,
        //      ];
        //      // $response->statusCode = 200;
        //      'http_response' = $response->statusCode;
        //  },
        // ],

        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'class' => 'yii\rest\UrlRule',
                'pluralize' => false,
                'controller' => 'api/default',
            ],
        ],

    ],
];

моя модель

<?php
namespace frontend\modules\v1\models;

use common\models\Brand;

class BrandApi extends Brand {
    public function fields() {
        return ['title'];
    }
}

Я попытался добавить конфигурацию ответа, которую я нашел в руководстве, но не сработал

Я хочу получать сообщения об ошибках типа enter image description here

Сначала я думал, что это было поведение доступа, но это не так! Я использовал поведение доступа, чтобы убедиться, что пользователь, запрашивающий API, подключен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...