Debug panel для api запросов

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 11:23

Доброго дня. Иногда хочется просмотривать лог выполнения запросов для запросов к API так же как это делается для не API.

Код: Выделить всё

supersite.local/debug
но когда я делаю запросы к API на домен

Код: Выделить всё

api.supersite.local
мне приходится только догадываться что там происходит
т.к. сюда они не попадают

Код: Выделить всё

supersite.local/debug
Если возможность также просматировать логи по этим запросам ?

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 11:26

Что мешает открыть api.supersite.local/debug

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 11:30

я пробывал но получил вот это

Код: Выделить всё

An Error occurred while handling another error:
yii\base\InvalidArgumentException: Response content must not be an array. in ../yii2/web/Response.php:

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 11:45

debugger подключен в конфиге? приложение api работает в dev?

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 11:53

Код: Выделить всё

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
ДА все как для backend

Логи в runtime/debug пишутся
Последний раз редактировалось an.viktory@gmail.com 2019.10.10, 11:55, всего редактировалось 1 раз.

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 11:55

А что выводит api.supersite.local?
Попробуйте вывести site/index

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 11:56

Страница не найдена

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 11:57

Если бекенд на другом сервере, то добавтьте свой айпи в дебагере в список разрешенных

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 11:59

да нет все у меня на локали просто в nginx прописаны разные домены для back и api
может я чего-то не догоняю ?

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 12:17

выведите на главной '/' => 'site/index' (если нет, то создайте контроллер SiteController и в нем действие index), посмотрите, будет ли внизу панель дебагера.

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 12:28

пишет что нет такой страницы. Проект не я поднимал , работаю уже с готовым наверное что-то переопределено и он не пробивает этот маршрут
в правила добавил это маршрут но он его не ищет

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 12:32

Так может там SiteController нет?

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 12:38

я создал другой контроллер т.к. это был под RestController занят
создал TestController в нем actionTest получаю ответ пустой json ответ

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 13:18

an.viktory@gmail.com писал(а):
2019.10.10, 12:38
я создал другой контроллер т.к. это был под RestController занят
создал TestController в нем actionTest получаю ответ пустой json ответ
Дейсвие должно быть такое

Код: Выделить всё

 public function actionTest()
    {
        Yii::$app->response->format = \yii\web\Response::FORMAT_HTML;
        return $this->render('index');
    }
layout/main.php и view/site/index.php перенестите из стандартного шаблога приложения. В итоге должно вывести стандартную страницу с тулбаром дебагера.

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 13:26

сделал но как говорил в конфиге где переопределен Response он пишет

Код: Выделить всё

An Error occurred while handling another error:
yii\base\InvalidArgumentException: Response content must not be an array

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 13:31

Что значит переопределен Response? Вы используете свою реализацию?
Отключите дебагер в конфиге и попроюуйте выполнить тот же actionTest

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 13:37

Код: Выделить всё

 'response' => [
            'class' => 'common\modules\statistics\components\StatisticsResponse',
            'format' => yii\web\Response::FORMAT_JSON, // стандартные ошибки в json (Page Not Found)
            'charset' => 'UTF-8',
            'on beforeSend' => function ($event) {

                $response = $event->sender;
                if ($response->data !== null) {
                    $response->data = [
                        'success' => $response->isSuccessful,
                        'data' => $response->data,
                    ];
                } else {
                    $response->statusCode = 200;
                }
            },
            'formatters' => [
                'json' => [
                    'class' => 'yii\web\JsonResponseFormatter',
                    'prettyPrint' => YII_DEBUG,
                    'encodeOptions' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE,
                ],
            ],
        ],
        
когда закомментировал переопределение Response то получил пустой ответ без дебаг панели. Думаю не стоит дальше пытаться так можно сломать то что есть. Извиняюсь за отнятое время. Думал что все гораздо проще.

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 14:07

an.viktory@gmail.com писал(а):
2019.10.10, 13:37
когда закомментировал переопределение Response то получил пустой ответ без дебаг панели. Думаю не стоит дальше пытаться так можно сломать то что есть. Извиняюсь за отнятое время. Думал что все гораздо проще.
Рано сдаетесь))
beforeSend обработчик и генерирует вашу ошибку.
Замените на это и все будет ОК

Код: Выделить всё

'on beforeSend' => function ($event) {

                $response = $event->sender;
                if ($response->data !== null && $response->format ==  \yii\web\Response::FORMAT_JSON) {
                    $response->data = [
                        'success' => $response->isSuccessful,
                        'data' => $response->data,
                    ];
                } else {
                    $response->statusCode = 200;
                }
            },

an.viktory@gmail.com
Сообщения: 512
Зарегистрирован: 2016.09.05, 23:21

Re: Debug panel для api запросов

Сообщение an.viktory@gmail.com » 2019.10.10, 14:15

спасибо)))
но при открытии дебаг панели теперь вот эта напасть

Код: Выделить всё

Invalid Argument – yii\base\InvalidArgumentException
The file or directory to be published does not exist: /var/www/supersite.local/vendor/bower/bootstrap/dist

yiiliveext
Сообщения: 503
Зарегистрирован: 2019.08.13, 01:49

Re: Debug panel для api запросов

Сообщение yiiliveext » 2019.10.10, 14:18

В конфиге комоузера (composer.json) пропишите asset-packagist.org

Код: Выделить всё

"repositories": [
    {
        "type": "composer",
        "url": "https://asset-packagist.org"
    }
]
И сделайте composer update

И алиасы в конфиге

Код: Выделить всё

'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
    ],

Ответить