Страница 1 из 1

api

Добавлено: 2018.04.05, 12:41
Auramel
Делаю API.

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

public function actionIndex(string $token = '', string $command = '')
    {
        try {
            if (empty($token || empty($token))) {
                throw new \Exception('empty token or command');
            }

            $token = TokenRecord::findOne(['id' => $token]);

            if (is_null($token)) {
                throw new \Exception('token not exists');
            }

            $user = UserRecord::findOne(['id' => $token->getAttribute('userId')]);

            if (is_null($user)) {
                throw new \Exception('user not exists');
            }
        } catch (\Exception $exception) {
            return $exception->getMessage();
        }

        return 'good';
    }
Как бы Вы оптимизировали данный код? на какие классы или методы поделили бы это?

UPD: еще вопрос. Кто работал в Laravel знает метод $request->getContent(). Какой аналог у Yii2? Через postman в body отправляю JSON данные, нигде их не вижу. :?

Re: api

Добавлено: 2018.04.05, 12:59
andku83

Re: api

Добавлено: 2018.04.05, 14:15
nickdenry

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

if (empty($token || empty($token))) {
    throw new \Exception('empty token or command');
}
Исправил бы на это:

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

if (empty($token) || empty($command)) {
    throw new \Exception('empty token or command');
}

Re: api

Добавлено: 2018.04.05, 14:22
Auramel
nickdenry писал(а): 2018.04.05, 14:15

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

if (empty($token || empty($token))) {
    throw new \Exception('empty token or command');
}
Исправил бы на это:

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

if (empty($token) || empty($command)) {
    throw new \Exception('empty token or command');
}
Оригинально :D

Re: api

Добавлено: 2018.04.06, 15:35
zabachok
Все что в блоке try переместить в форму и валидировать все это в ней. На то есть стандартные валидаторы.

Re: api

Добавлено: 2018.04.06, 15:51
tugrik
Auramel писал(а): 2018.04.05, 12:41 Через postman в body отправляю JSON данные, нигде их не вижу. :?
Скилл ванги:
а в

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

file_get_contents('php://input');
-есть , и в

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

Yii::$app->request->getRawBody();
-есть
ПС: а хидери вообще придумали просто так...

Re: api

Добавлено: 2018.04.06, 23:23
Auramel
tugrik писал(а): 2018.04.06, 15:51
Auramel писал(а): 2018.04.05, 12:41 Через postman в body отправляю JSON данные, нигде их не вижу. :?
Скилл ванги:
а в

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

file_get_contents('php://input');
-есть , и в

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

Yii::$app->request->getRawBody();
-есть
ПС: а хидери вообще придумали просто так...
Ха ха, а вот и нет. Создал issue в yii2. Не работает php://input

Re: api

Добавлено: 2018.04.07, 09:51
Nex-Otaku
Чем "rawBody" не угодил?