Yii - Campos
Substituindo fields() and extraFields()métodos, você pode definir quais dados podem ser colocados em uma resposta. A diferença entre esses dois métodos é que o primeiro define o conjunto padrão de campos, que deve ser incluído na resposta, enquanto o último define campos adicionais, que podem ser incluídos na resposta se um usuário final solicitá-los por meio doexpand parâmetro de consulta.
Step 1 - Modifique o MyUser modelar desta forma.
<?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',
];
}
}
?>
Além dos campos padrão: id e nome, adicionamos um campo personalizado - datetime.
Step 2 - No Postman, execute o URL http://localhost:8080/users.
Step 3 - Agora, modifique o MyUser modelar desta forma.
<?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',
];
}
}
?>
Observe que o campo de e-mail é retornado pelo extraFields() método.
Step 4 - Para obter dados com este campo, execute http://localhost:8080/users?expand=email.
Personalização de ações
o yii\rest\ActiveController classe fornece as seguintes ações -
Index - Lista os recursos página por página
View - Retorna os detalhes de um recurso especificado
Create - Cria um novo recurso
Update - Atualiza um recurso existente
Delete - Exclui o recurso especificado
Options - Retorna os métodos HTTP suportados
Todas as ações acima são declaradas no método de ações ().
Para desativar as ações “excluir” e “criar”, modifique o UserController por aqui -
<?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;
}
}
?>
Tratamento de erros
Ao obter uma solicitação de API RESTful, se houver um erro na solicitação ou algo inesperado acontecer no servidor, você pode simplesmente lançar uma exceção. Se você puder identificar a causa do erro, deverá lançar uma exceção junto com um código de status HTTP adequado. Yii REST usa os seguintes status -
200 - Ok.
201- Um recurso foi criado com sucesso em resposta a uma solicitação POST. O cabeçalho Location contém a URL que aponta para o recurso recém-criado.
204 - A solicitação foi tratada com sucesso e a resposta não contém conteúdo.
304 - O recurso não foi modificado.
400 - Pedido incorreto.
401 - A autenticação falhou.
403 - O usuário autenticado não tem permissão para acessar o endpoint de API especificado.
404 - O recurso não existe.
405 - Método não permitido.
415 - Tipo de mídia não compatível.
422 - A validação de dados falhou.
429 - Muitos pedidos.
500 - Erro interno do servidor.