[Yii2] Membuat RESTful API

API adalah sebuah software yang mengintegrasikan antara aplikasi yang kita buat dengan aplikasi yang lain. Tujuan pembuatannya yaitu untuk saling berbagi data antar aplikasi yang sudah diintegrasikan tersebut.

RESTful API / REST API merupakan penerapan dari API (Application Programming Interface). Sedangkan REST (Representional State Transfer) adalah sebuah arsitektur metode komunikasi yang menggunakan protokol HTTP untuk pertukaran data dimana metode ini sering diterapkan dalam pengembangan aplikasi. Dengan tujuannya untuk menjadikan sistem memiliki performa yang baik, cepat dan mudah untuk di kembangkan (scale) terutama dalam pertukaran dan komunikasi data.

Membangun REST API di Yii sebenarnya cukup mudah. Anda dapat memanfaatkan kerangka kerja MVC yang ada, tetapi Anda membuat titik akses berbeda yang ingin Anda akses oleh berbagai jenis layanan (bukan pengunjung situs web).

Berikut ini, kami menggunakan contoh untuk mengilustrasikan bagaimana Anda dapat membangun satu set RESTful API dengan sedikit usaha pengkodean. Yii yang akan kita gunakan adalah Yii2 Advanced Template.

TOP TUTORIALS:  Cara Mudah Cegah Ransomware dan Malware dengan SRP

Asumsikan Anda ingin mengekspos data pengguna melalui RESTful APIs. Tabel user pada contoh ini telah Anda buat ketika pertama kali menginstal Yii. Untuk cara instalasi Yii bisa anda lihat pada Cara Install Yii2 Advanced via Composer.

Langkah-Langkah Membuat RESTful API pada Yii2 Advanced

A. Membuat API Endpoint

Pada Yii2 Advanced template kita mempunyai direktori backend dan frontend. Untuk memisahkan fitur API, kita akan membuat direktori baru bernama “api” sebagai endpoint.

  1. Salin direktori backend dan ubah namanya menjadi “api”.
  1. Edit file “common/config/bootstrap.php” dan tambahkan alias untuk “api”.
<?php
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');
  1. Pada direktori “environments/dev”, salin direktori backend dan ubah namanya menjadi “api”. Demikian juga untuk direktori “environments/prod”, sehingga akan tampak seperti gambar berikut
  1. Sesuaikan file “environments/index.php” seperti berikut ini
return [
    'Development' => [
        'path' => 'dev',
        'setWritable' => [
            ..........,
            'api/runtime',
            'api/web/assets',
        ],
		..............
        'setCookieValidationKey' => [
            ..........,
            'api/config/main-local.php',
        ],
    ],
    'Production' => [
        'path' => 'prod',
        'setWritable' => [
			..........,
            'api/runtime',
            'api/web/assets',
        ],
		.............
		'setCookieValidationKey' => [
			..........,
            'api/config/main-local.php',
        ],
    ],
];
  1. Pada direktori api yang kita buat tadi, ganti semua kata “backend” menjadi “api”
TOP TUTORIALS:  Membuat aplikasi realtime dengan Node.js dan MySQL

B. Konfigurasi Yii

  1. Membuat Controller 

Buat file “UserController” pada direktori “api/controllers” dan salin script berikut ini

<?php
namespace api\controllers;
use yii\rest\ActiveController;

class UserController extends ActiveController
{
    public $modelClass = 'common\models\User';
}
  1. Konfigurasi URL Rules dan JSON Input

Ubah file “api/config/main.php” dengan menambahkan JSON request dan URL Rule seperti berikut

return [
	.........
    'components' => [
	    'request' => [
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]
        ],
		.........
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
            ],
        ]
		............
    ],
    ............
];
  1. Buat file “.htaccess” pada direktori “api/web/” dan salin kode berikut
	RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    RewriteRule ^index.php/ - [L,R=404]

C. Pengujian API

  1. Download Postman, kemudian buka Postman. Buat request ke URL “http://localhost/yii2-advanced/api/web/users”
  1. Atau dengan perintah CURL
  1. Anda juga dapat mengaksesnya melalui browser dengan URL “”http://localhost/yii2-advanced/api/web/users”

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *