Membuat Restful API Menggunakan Lumen
Silahkan ikuti langkah-langkah berikut:
1. Instal Composer di https://getcomposer.org/Composer-Setup.exe
2. Setelah selesai menginstal,cek terlebih dahulu di command prompt(CMD) lalu ketikan "composer" apabila menunjukan sepeti gambar di bawah ini berarti instasali berhasil.
3. Lalu masuk ke direktori c:\xampp\htdocs
4. Buat projek Lumen dengan nama LatihanApi dengan mengetikan perintah: composer create-project --prefer-dist laravel/lumen RestApi ,tunggu hingga proses selesai
5. Kemudian buka folder project yang telah dibuat menggunakan sublime.
6. Edit file bootstrap/app.php, lalu uncomment 2 baris berikut :
$app->withFacades();
$app->withEloquent();
buka file env,lalu Setting .env file,seperti contoh :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=latihan_api (buat database seperti ini)
DB_USERNAME=root (sesuaikan dengan konfigurasi di local masing)
DB_PASSWORD=secret (sesuaikan dengan konfigurasi di local masing)
7. Buat database di phpmyadmin dengan nama latihan_api, sesuai dengan settingan .env file
8. Buat database dengan nama latihan_api sesuai dengan settingan .env file
9. Buat table posts ke database, dengan mengeksekusi :php artisan make:migration create_post_table.
10. Buka file
database/migrations/[tahun]_[bulan]_[tanggal]_[randon_number]_create_post_table.php,
kemudian edit function up menjadi sperti ini :
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('title', 100);
$table->enum('status', array('draft','published'))->default('draft');
$table->text('content', 65535);
$table->integer('user_id')->index('user_id_foreign');
$table->timestamps();
});
11. Kemudian migrasikan table ke database, dengan mengeksekusi perintah : php artisan migrate
12. Install lumen generator, untuk generate controller, dengan mengeksekusi perintah :
composer require --dev flipbox/lumen-generator
tunggu proses hingga selesai
13. Lalu ,tambahkan kode berikut ke bootsrap/app.php, sebelum baris “return $app; “ :
if ($app->environment() !== 'production') {
$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);
}
14. Generate controller PostController, dengan mengeksekusi perintah :
php artisan make:controller PostController --resource
15. Nah File yang tadi telah di generate bisa di temukan di app/Http/Controllers/POstController.php
Kemudian tambahkan kode berikut ke routes/web.php :
$router->get('/api/posts', [
'uses' => 'PostController@index',
'as' => 'list_posts'
]);
16. Update isi file routes/web.php, dengan menambahkan kode berikut :
function resource($router, $uri, $controller)
{
//$verbs = ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'];
$router->get($uri, $controller.'@index');
$router->post($uri, $controller.'@store');
$router->get($uri.'/{id}', $controller.'@show');
$router->put($uri.'/{id}', $controller.'@update');
$router->patch($uri.'/{id}', $controller.'@update');
$router->delete($uri.'/{id}', $controller.'@destroy');
}
resource($router, 'api/posts', 'PostController');
17. Lihat routes yang telah dibuat, menggunakan perintah : php artisan route:list
Kemudian akan tampil, tampilan seperti dibawah ini :
18. Kemudian buat model Post dengan mengeksekusi script : php artisan make:model Post
19. Buka file app/Post.php, tambahkan code (didalam class):
protected $fillable = array('title', 'content', 'status', 'user_id');
20. Kemudian bikin constructor di PostController, dengan menambahkan kode berikut, di dalam class:
public function __construct(\App\Post $post)
{
$this->post = $post;
}
21. Update code di function, index, store, show, update, delete, lihat sample code seperti di bawah ini:
21. Jalankan servernya dengan cara mengeksekusi perintah berikut
di cmd : php -S localhost:8000 -t public
22. Buka di browser : http://localhost:8000
Jika muncul tulisan seperti dibawah ini, berarti server sudah terkoneksi.
Lumen (5.7.6) (Laravel Components 5.7.*)
23. Test menggunakan postman, contoh get : http:localhost:8000/api/post
24. Contoh POST : http:localhost:8000/api/post
25. Contoh GET : http:localhost:8000/api/post
Mengimplementasikan Validasi
- Untuk membuat validasi, pada postController ketikkan kode seperti dibawah ini :
Mengimplementasikan Relationship
- Sebagai contoh saya gunakan tabel Post dan Coment udah dilakukan relationship. Tambahkan kode berikut didalam model Post.
Mengimplementasikan Authorization
- Sebelumnya kita buat User Registration. Buka file bootstrap/app.php, kemudian uncomment kode berikut :
$app->routeMiddleware
([
'auth' => App\Http\Middleware\Authenticate::class,
]);
$app->register(App\Providers\AppServiceProvider::class);
$app->register(App\Providers\AuthServiceProvider::class) - Buat user migration dengan mengeksekusi kode berikut didalam cmd
php artisan make:migration create_users_table - Kemudian buka user migration yang telah dibuat menggunakan sublime. dan edit menjadi seperti ini:
- kemudian run migration dengan mengeksekusi kode berikut didalam cmd:
php artisan migrate - Buat user model (User model biasanya sudah secara otomatis telah dibuat), jika belum ketik kode berikut didalam cmd
php artisan make:model User - Buka file app/User.php dan edit seperti dibawah ini
- Buat UserController, ketikkan kode berikut didalam cmd
php artisan make:controller UserController - Buka file app/Http/Controllers/UserControllers.php dan edit
- Tambahkan register route. Buka file routes/web.php dan tambahkan kode berikut
$router->post('api/users/register','UserController@register'); - Kemudian buat request post /api/users/register dalam Postman dengan memasukkan parameter name,email, password
- Kemudian Buat User Login. pertama-tama ketikkan kode berikut didalam cmd
php artisan make:controller AuthController - Buka file app/Http/Controllers/AuthController.php dan edit seperti dibawah ini
- Tambahkan login route. Buka file routes/web.php dan tambahkan kode berikut
$router->post('api/auth/login','AuthController@login'); - Buat request Post api/users/register dengan parameter email dan password. Dan akan muncul seperti berikut{
"success": true,
"api_token": "249766b5523205f7a9da9903b0eb783a5d219205",
"message": { "id": 1,
"name": "First User",
"email": "first_user@gmail.com",
"created_at": "2018-12-14 04:36:03",
"updated_at": "2018-12-14 04:36:03"
} } - Kemudian buka file app/Http/Controllers/PostController.php dan tambahkan Auth class<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
class PostController extends Controller
{
…..
} - Test get rewuest di postman, http://localhost:8000/api/posts. dan akan mucul seperti berikut:
Unauthorized - Sekarang coba get Request dengan parameter api_tokenhttp://localhost:8000/api/posts?api_token={YOUR API TOKEN WHEN LOGIN}. It should return:
{
"current_page": 1,
"data": [
{
"id": 1,
"title": "Testing Update",
"status": "published",
"content": "This is Test Update",
"user_id": 1,
"created_at": "2018-12-01 05:16:47",
"updated_at": "2018-12-01 05:18:59"
}
],
"first_page_url": "http://localhost:8000/api/posts?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://localhost:8000/api/posts?page=1",
"next_page_url": null,
"path": "http://localhost:8000/api/posts",
"per_page": 20,
"prev_page_url": null,
"to": 1,
"total": 1
}
Komentar
Posting Komentar