Переопределяя методы fields () и extraFields () , вы можете определить, какие данные можно вставить в ответ. Разница между этими двумя методами заключается в том, что первый определяет набор полей по умолчанию, который должен быть включен в ответ, в то время как последний определяет дополнительные поля, которые могут быть включены в ответ, если конечный пользователь запрашивает их через параметр запроса расширения. ,
Шаг 1 — Модифицируйте модель MyUser таким образом.
<?php
namespace app\models;
use app\components\UppercaseBehavior;
use Yii;
/**
* This is the model class for table "user".
*@property integer $id
* @property string $name
* @property string $email
*/
class MyUser extends \yii\db\ActiveRecord {
public function fields() {
return [
'id',
'name',
//PHP callback
'datetime' => function($model) {
return date("d:m:Y H:i:s");
}
];
}
/**
* @inheritdoc
*/
public static function tableName() {
return 'user';
}
/**
* @inheritdoc
*/
public function rules() {
return [
[['name', 'email'], 'string', 'max' => 255]
];
}
/**
* @inheritdoc
*/
public function attributeLabels() {
return [
'id' => 'ID',
'name' => 'Name',
'email' => 'Email',
];
}
}
?>
Помимо полей по умолчанию: id и name, мы добавили настраиваемое поле — datetime .
Шаг 2. В Postman запустите URL-адрес http: // localhost: 8080 / users .

Шаг 3 — Теперь измените модель MyUser таким образом.
<?php
namespace app\models;
use app\components\UppercaseBehavior;
use Yii;
/**
* This is the model class for table "user".
*
* @property integer $id
* @property string $name
* @property string $email
*/
class MyUser extends \yii\db\ActiveRecord {
public function fields() {
return [
'id',
'name',
];
}
public function extraFields() {
return ['email'];
}
/**
* @inheritdoc
*/
public static function tableName() {
return 'user';
}
/**
* @inheritdoc
*/
public function rules() {
return [
[['name', 'email'], 'string', 'max' => 255]
];
}
/**
* @inheritdoc
*/
public function attributeLabels() {
return [
'id' => 'ID',
'name' => 'Name',
'email' => 'Email',
];
}
}
?>
Обратите внимание, что поле электронной почты возвращается методом extraFields () .
Шаг 4 — Чтобы получить данные с помощью этого поля, запустите http: // localhost: 8080 / users? Expand = email .

Настройка действий
Класс yii \ rest \ ActiveController предоставляет следующие действия:
- Индекс — список ресурсов страница за страницей
- Просмотр — возвращает сведения об указанном ресурсе.
- Создать — Создает новый ресурс
- Обновление — обновляет существующий ресурс
- Удалить — удаляет указанный ресурс
- Параметры — возвращает поддерживаемые методы HTTP.
Индекс — список ресурсов страница за страницей
Просмотр — возвращает сведения об указанном ресурсе.
Создать — Создает новый ресурс
Обновление — обновляет существующий ресурс
Удалить — удаляет указанный ресурс
Параметры — возвращает поддерживаемые методы HTTP.
Все вышеперечисленные действия объявляются в методе actions ().
Чтобы отключить действия «удалить» и «создать», измените UserController следующим образом:
<?php
namespace app\controllers;
use yii\rest\ActiveController;
class UserController extends ActiveController {
public $modelClass = 'app\models\MyUser';
public function actions() {
$actions = parent::actions();
// disable the "delete" and "create" actions
unset($actions['delete'], $actions['create']);
return $actions;
}
}
?>
Обработка ошибок
При получении запроса RESTful API, если в запросе произошла ошибка или что-то неожиданное произошло на сервере, вы можете просто вызвать исключение. Если вы можете определить причину ошибки, вы должны сгенерировать исключение вместе с правильным кодом состояния HTTP. Yii REST использует следующие статусы —
200 — ОК.
201 — ресурс был успешно создан в ответ на запрос POST. Заголовок Location содержит URL, указывающий на вновь созданный ресурс.
204 — Запрос был обработан успешно, и ответ не содержит содержимого.
304 — ресурс не был изменен.
400 — Плохой запрос.
401 — Ошибка аутентификации.
403. — Аутентифицированному пользователю не разрешен доступ к указанной конечной точке API.
404 — Ресурс не существует.
405 — Метод не разрешен.
415 — неподдерживаемый тип носителя.
422 — Проверка данных не удалась.
429 — Слишком много запросов.
500 — Внутренняя ошибка сервера.