ApexWire / yii2-restclient

Инструменты для использования API, как ActiveRecord для Yii2
BSD 3-Clause "New" or "Revised" License
13 stars 4 forks source link

Не обрабатывается валидный ответ API #17

Closed comradefuzz closed 7 years ago

comradefuzz commented 7 years ago

При запросе несуществующего элемента данных RESTful API возвращает валидный ответ 404 Not Found. В этом случае при обращении $model = Account::findOne(['id' => $id]); выдает GuzzleHttp\Exception\ClientException, а должен был вернуть null.

Если отключать http_errors в настройках guzzle, то ответ с ошибкой воспринимается, как данные:

Unknown Property – yii\base\UnknownPropertyException

Attribute `id` not found in API response. Available fields: name, message, code, status, type.

Как предполагается решать такие ситуации?

ApexWire commented 7 years ago

Реализация для таких ситуаций не была предусмотрена. Ваш PR приму после небольшой корректировки: false заменить на null

comradefuzz commented 7 years ago

Так и было задумано, но null не проходит это условие, что вызывает ошибку:

public function one($db = null)
    {
        $row = parent::one($db);
        if ($row !== false) {
            $models = $this->populate(isset($row[0]) ? $row : [$row]);
            return reset($models) ?: null;
        }
        return null;
    }
ApexWire commented 7 years ago

Принял PR