Yii-フィールド
オーバーライドすることによって fields() and extraFields()メソッドでは、どのデータを応答に入れることができるかを定義できます。これら2つの方法の違いは、前者はデフォルトのフィールドセットを定義し、後者は追加のフィールドを定義します。これは、エンドユーザーがを介して要求した場合に応答に含めることができます。expand クエリパラメータ。
Step 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。
Step 2 − Postmanで、URLを実行します http://localhost:8080/users。
Step 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() 方法。
Step 4 −このフィールドでデータを取得するには、 http://localhost:8080/users?expand=email。
アクションのカスタマイズ
ザ・ yii\rest\ActiveController クラスは次のアクションを提供します-
Index −リソースをページごとに一覧表示します
View −指定されたリソースの詳細を返します
Create −新しいリソースを作成します
Update −既存のリソースを更新します
Delete −指定されたリソースを削除します
Options −サポートされているHTTPメソッドを返します
上記のすべてのアクションは、actions method()で宣言されています。
「削除」および「作成」アクションを無効にするには、 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ステータスコードとともに例外をスローする必要があります。YiiRESTは次のステータスを使用します-
200 −OK。
201−POSTリクエストに応答してリソースが正常に作成されました。Locationヘッダーには、新しく作成されたリソースを指すURLが含まれています。
204 −要求は正常に処理され、応答にはコンテンツが含まれていません。
304 −リソースは変更されていません。
400 −不正なリクエスト。
401 −認証に失敗しました。
403 −認証されたユーザーは、指定されたAPIエンドポイントへのアクセスを許可されていません。
404 −リソースが存在しません。
405 −メソッドは許可されていません。
415 −サポートされていないメディアタイプ。
422 −データ検証に失敗しました。
429 −リクエストが多すぎます。
500 −内部サーバーエラー。