membuat Yii2 restfull Web service menggunakan advance template ( bagian 2 : konfigurasi dan kostumasi file )
ini dalah lanjutan dari artikel saya sebelumnya . silahkan membaca artikel
agar tidak bingungg saat membaca artikel ini .
Setelah mempersiapkan struktur folder, kali ini saya akan share konfigurasi file yang sudah saya rubah isinya.
Pada file api/assets/AppAssets.php rubahlah namespace backend menjadi api
File : api/assets/AppAssets.php
Pada api/config/main.php tambahkan script :
'request' => [
.....
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
.....
],
dan pada
'urlManager' => [
'enablePrettyUrl' => true,
// 'enableStrictParsing' => true,
'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => ['article', (...controller lainnya...) ]], ], ],
Ketika anda menambahkan controler jangan lupa menambahkan pemanggilan / nama controller pada rules perhatikan case sensitifnya
file: api/config/main.php
Pada file api/controllers/SiteController.php
Konfigurasi pada file api/controllers/SiteController.php menngantisipasi jika user mengakses langsung home url api website yang kita buat.
file: api/controllers/SiteController.php
Pada file api/views/layouts/main.php
untuk mendukung tampilan pada halaman home page kita perlu merubah use pada file api/views/layouts/main.php
file: api/views/layouts/main.php
Pada file api/web/.htaccess
File .htaccess ini umumnya belum ada di folder web jadi silahkan kamu membuat file .htaccess sendiri
file: api/web/.htaccess
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
Pada file api/web/index.php
berdasarkan struktur folder yang telah kita buat , kita telah menghilangkan / menghapus file api/config/bootstrap.php. oleh karena itu perlu kita hapus juga script pada file api/web/index.php agar file tersebut tidak di load
file: api/web/index.php
Folder api yang kita buat belum terregistrasi dengan sempunya oleh karena itu kita perlu menambahkan alias pada file common/config/bootstrap.php
Oke ... kita telah mempunyai Yii2 Framework Restfull webservice namun kamu perlu mengkinfigurasi virtual host kamu sebelum memakainya . dalam halini saya menggunakan xampp dan untuk konfigurasinya silahkan membacanya pada artikel :
membuat Yii2 restfull Web service menggunakan advance template ( bagian 3 : penambahan tabel dan konfigurasi file model dan controller )
agar tidak bingungg saat membaca artikel ini .
Setelah mempersiapkan struktur folder, kali ini saya akan share konfigurasi file yang sudah saya rubah isinya.
Pada file api/assets/AppAssets.php rubahlah namespace backend menjadi api
File : api/assets/AppAssets.php
Sebelum : <?php namespace backend\assets;use yii\web\AssetBundle; /** * Main backend application asset bundle. */ class AppAsset extends AssetBundle { ..... /* ..script asset original lainnya..*/ | Sesudah <?php namespace api\assets; use yii\web\AssetBundle; /** * Main api application asset bundle. */ class AppAsset extends AssetBundle { ..... /* ..script asset original lainnya..*/ |
Pada api/config/main.php tambahkan script :
'request' => [
.....
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
.....
],
dan pada
'urlManager' => [
'enablePrettyUrl' => true,
// 'enableStrictParsing' => true,
'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => ['article', (...controller lainnya...) ]], ], ],
Ketika anda menambahkan controler jangan lupa menambahkan pemanggilan / nama controller pada rules perhatikan case sensitifnya
file: api/config/main.php
Sebelum <?php /* ..script main original lainnya..*/ ... return [ 'id' => 'app-backend', 'basePath' => dirname(__DIR__), 'controllerNamespace' => 'backend\controllers', 'bootstrap' => ['log'], 'modules' => [], 'components' => [ 'request' => [ 'csrfParam' => '_csrf-backend', ], 'user' => [ 'identityClass' => 'common\models\User', 'enableAutoLogin' => true, 'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true], ], 'session' => [ // this is the name of the session cookie used for login on the backend 'name' => 'advanced-backend', ], .... /* ..script main original lainnya..*/ ..... /* 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], */ 'authManager' => [ 'class'=>'yii\rbac\DbManager', 'defaultRoles'=>['guest'], ], ], 'params' => $params, ]; | Sesudah <?php /* ..script main original lainnya..*/ ... return [ 'id' => 'app-api', 'basePath' => dirname(__DIR__), 'controllerNamespace' => 'api\controllers', 'bootstrap' => ['log'], 'components' => [ 'request' => [ 'csrfParam' => '_csrf-api', 'parsers' => [ 'application/json' => 'yii\web\JsonParser', ] ], 'user' => [ 'identityClass' => 'common\models\User', 'enableSession' => false, 'loginUrl' => null, ], .... /* ..script main original lainnya..*/ ..... 'urlManager' => [ 'enablePrettyUrl' => true, // 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yii\rest\UrlRule', 'controller' => ['article','ads','category','imagefile','auth']], ], ], 'authManager' => [ 'class'=>'yii\rbac\DbManager', 'defaultRoles'=>['guest'], ], ], 'params' => $params, ]; |
Pada file api/controllers/SiteController.php
Konfigurasi pada file api/controllers/SiteController.php menngantisipasi jika user mengakses langsung home url api website yang kita buat.
file: api/controllers/SiteController.php
Sebelum <?php namespace backend\controllers; use Yii; use yii\web\Controller; use yii\filters\VerbFilter; .... /* ..script SiteController.php original lainnya..*/..... | Sesudah <?php namespace api\controllers; use Yii; use yii\web\Controller; use yii\filters\VerbFilter; .... /* ..script SiteController.php original lainnya..*/..... |
Pada file api/views/layouts/main.php
untuk mendukung tampilan pada halaman home page kita perlu merubah use pada file api/views/layouts/main.php
file: api/views/layouts/main.php
Sebelum <?php /* @var $this \yii\web\View */ /* @var $content string */ use backend\assets\AppAsset; use yii\helpers\Html; use yii\bootstrap\Nav; .... /* ..script layouts/main.php original lainnya..*/..... | Sesudah <?php /* @var $this \yii\web\View */ /* @var $content string */ use api\assets\AppAsset; use yii\helpers\Html; use yii\bootstrap\Nav; .... /* ..script layouts/main.php original lainnya..*/..... |
Pada file api/web/.htaccess
File .htaccess ini umumnya belum ada di folder web jadi silahkan kamu membuat file .htaccess sendiri
file: api/web/.htaccess
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
Pada file api/web/index.php
berdasarkan struktur folder yang telah kita buat , kita telah menghilangkan / menghapus file api/config/bootstrap.php. oleh karena itu perlu kita hapus juga script pada file api/web/index.php agar file tersebut tidak di load
file: api/web/index.php
Sebelum <?php defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); .... /* ..script api/web/index.php original lainnya..*/..... require(__DIR__ . '/../config/bootstrap.php'); .... /* ..script api/web/index.php original lainnya..*/..... $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../../common/config/main.php'), require(__DIR__ . '/../../common/config/main-local.php'), require(__DIR__ . '/../config/main.php'), require(__DIR__ . '/../config/main-local.php') ); (new yii\web\Application($config))->run(); | Sesudah <?php defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); .... /* ..script api/web/index.php original lainnya..*/..... .... /* ..script api/web/index.php original lainnya..*/..... $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../../common/config/main.php'), require(__DIR__ . '/../../common/config/main-local.php'), require(__DIR__ . '/../config/main.php'), require(__DIR__ . '/../config/main-local.php') ); (new yii\web\Application($config))->run(); |
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
Oke ... kita telah mempunyai Yii2 Framework Restfull webservice namun kamu perlu mengkinfigurasi virtual host kamu sebelum memakainya . dalam halini saya menggunakan xampp dan untuk konfigurasinya silahkan membacanya pada artikel :
membuat Yii2 restfull Web service menggunakan advance template ( bagian 3 : penambahan tabel dan konfigurasi file model dan controller )
Comments
Post a Comment