Yii-필드
재정의함으로써 fields() and extraFields()응답에 넣을 수있는 데이터를 정의 할 수 있습니다. 이 두 방법의 차이점은 전자는 응답에 포함되어야하는 기본 필드 집합을 정의하고 후자는 추가 필드를 정의합니다. 이는 최종 사용자가이를 통해 요청하는 경우 응답에 포함될 수 있습니다.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 및 이름 외에 사용자 정의 필드가 추가되었습니다. 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 메소드를 반환합니다.
위의 모든 작업은 작업 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 요청을받을 때 요청에 오류가 있거나 서버에서 예상치 못한 일이 발생하면 간단히 예외를 throw 할 수 있습니다. 오류의 원인을 식별 할 수 있으면 적절한 HTTP 상태 코드와 함께 예외를 발생시켜야합니다. Yii REST는 다음 상태를 사용합니다-
200 − 좋아요.
201− POST 요청에 대한 응답으로 리소스가 성공적으로 생성되었습니다. Location 헤더에는 새로 생성 된 리소스를 가리키는 URL이 포함됩니다.
204 − 요청이 성공적으로 처리되었으며 응답에 내용이 없습니다.
304 − 리소스가 수정되지 않았습니다.
400 − 잘못된 요청.
401 − 인증에 실패했습니다.
403 − 인증 된 사용자는 지정된 API 엔드 포인트에 액세스 할 수 없습니다.
404 − 리소스가 존재하지 않습니다.
405 − 허용되지 않는 방법.
415 − 지원되지 않는 미디어 유형.
422 − 데이터 검증에 실패했습니다.
429 − 요청이 너무 많습니다.
500 − 내부 서버 오류.