Yii - RESTful API'ler İş Başında
Denetleyici sınıfı, yii\rest\ActiveControllerortak RESTful eylemlerini uygulayan sınıf. Biz belirtiyoruz$modelClass özelliği, böylece denetleyici verileri işlemek için hangi modeli kullanacağını bilir.
Step 1 - adlı bir dosya oluşturun UserController.php denetleyiciler klasörünün içinde.
<?php
namespace app\controllers;
use yii\rest\ActiveController;
class UserController extends ActiveController {
public $modelClass = 'app\models\MyUser';
}
?>
Daha sonra, kullanıcı verilerine anlamlı HTTP fiilleri ve güzel URL'lerle erişilebilmesi ve manipüle edilebilmesi için urlManager bileşenini kurmamız gerekir. API erişim verilerine JSON'da izin vermek için, öğenin ayrıştırıcı özelliğini yapılandırmalıyız.request uygulama bileşeni.
Step 2 - Değiştirin config/web.php bu şekilde dosyala -
<?php
$params = require(__DIR__ . '/params.php'); $config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is
//required by cookie validation
'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
],
'cache' => [
'class' => 'yii\caching\FileCache',
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
],
],
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
'db' => require(__DIR__ . '/db.php'),
],
'modules' => [
'hello' => [
'class' => 'app\modules\hello\Hello',
],
],
'params' => $params, ]; if (YII_ENV_DEV) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; } return $config;
?>
Minimum çaba ile, kullanıcı verilerine erişmek için bir RESTful API oluşturduk. API'ler şunları içerir -
GET /users - tüm kullanıcıları sayfa sayfa listeleyin
HEAD /users - kullanıcı girişine genel bakış bilgilerini göster
POST /users - yeni bir kullanıcı oluşturun
GET /users/20 - kullanıcının ayrıntılarını iade edin 20
HEAD /users/20 - 20 kullanıcının genel bilgilerini gösterir
PATCH /users/ 20 and PUT /users/20 - kullanıcıyı güncelleyin 20
DELETE /users/20 - kullanıcıyı sil 20
OPTIONS /users - uç nokta / kullanıcılarla ilgili desteklenen fiilleri gösterin
OPTIONS /users/20 - uç nokta / kullanıcılar / 20 ile ilgili desteklenen fiilleri göster
Yii'nin denetleyici adını otomatik olarak çoğullaştırdığına dikkat edin.
Step 3 - Şimdi, Postacı'yı aç, yumruk at http://localhost:8080/usersve "Gönder" i tıklayın. Aşağıdakileri göreceksiniz.
Step 4 - Yeni bir kullanıcı oluşturmak için, istek türünü POST olarak değiştirin, iki gövde parametresi ekleyin: ad ve e-posta ve "Gönder" üzerine tıklayın.
Step 5 - Kullanabilirsiniz fieldssonuca hangi alanların dahil edileceğini belirtmek için parametre. Örneğin, URLhttp://localhost:8080/users?fields=id, isim sadece id ve name aşağıdaki ekran görüntüsünde gösterildiği gibi alanlar.