Skip to main content

membuat Yii2 restfull Web service menggunakan advance template ( bagian 2 : konfigurasi dan kostumasi file )

ini dalah lanjutan dari artikel saya sebelumnya . silahkan membaca artikel
  1. membuat-yii2-restfull-web-service (bagian 1 : struktur folder)
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();
Folder api yang kita buat belum terregistrasi dengan sempunya oleh karena itu kita perlu menambahkan alias pada file common/config/bootstrap.php 
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

Popular posts from this blog

Format tanggal dan jam pada bahasa pemrograman PHP (Date Format)

PHP (PHP: Hypertext Processor) Merupakan salah satu bahasa pemrograman yang sangat dikenal di kalangan programer. dan versi PHP paling terbaru pada tahuin postingan ini dibuat adalah versi 7.3. Artikel kali ini berkaitan dengan salah satu parameter pada fungsi yang sering digunakan untuk menampilkan maupun memformat output tanggal dan jam (waktu). beberapa fungsi yang sering digunakan diantaranya date() dan date_format(). Fungsi date() fungsi date() umumnya digunakan untuk mengambil waktu dari sytem / waktu server. fungsi date memiliki beberapa parameter diantaranya: $format: Digunakan untuk menentukan bentuk output waktu yang di inginkan. $timestamp:  (Opsional)  Nilai satuan waktu dalam UNIX sytem , bertipedata integer. Fungsi date_format() fungsi date_format() adalah fungsi untuk merubah bentuk output dari variable yang bertipedata date. fungsi ini biasanya didahului dengan fungsi date_create(),   yaitu salah satu fungsi php yang membuat...

Merubah Folder Publik Pada Laravel 5.8

Laravel merupakan salah satu framework yang saat ini sedang ramai digunakan, Laravel memiliki struktur direktori / folder yang cukup mudah dipahami bahkan kita bisa membuat custom folder sendiri sesuai keperluan. Kali ini saya ingin berbagi hal yang saya dapat setelah mempelajari laravel dan berkeliling dari situs ke situs. yaitu bagaimana merubah folder publik pada laravel (saya menggunakan laravel v5.8). Sebagai Catatan umumnya setiap webserver selalu mencari & membaca terlebih dahulu file index pada publik direktori (folder) pada website. dan pada laravel terletak pada folder public.  Berikut Contoh struktur folder pada laravel : / /app /bootstrap /config /database /public     /index.php /resources /routes /storage Namaun pada saat kita akan mengupload / deploy website kita ke server Hosting yang pada umumnya menggunakan nama folder public_html . tentu suatu hal yang mungkin membuat kita sedikit bingung untuk merubah nama folder dari project kita ka...

Struktur dasar penuliasan tag HTML

Dalam membangun sebuah website ada hal hal yang perlu kamu pelajari dan mengerti. salah satunya penyusunan script atau tulisan kode penyusun halaman website kamu HTML ( Hyper Text Markup Language ) merupakan bahasa markah yang menyusun sebuah halaman website. Penulisan bahasa HTML diapit dengan tag < ... >  . Contohnya :  < H1 > ( kontent atau teks ) </H1>