lifelong learner — urip iku urup, currently working on accenture.

RESt Endpoint dengan Slim

0
Degananda.com -

SLIM adalah salah satu jenis micro framework yang dikhususkan untuk membangun API(Application programming interfaces). Langkah awal sebelum kita membuat api yang mampu terintegrasi dengan database atau 3rd party lain adalah mendefinisikan endpoint.

Selayang pandang

Endpoint pada RESt merupakan sesuatu yang krusial. Pada tutorial ini kita membahas mengenai cara membuat endpoint pada framework SLIM. Http method yang disupport standart yakni : POST, GET, PUT, DELETE dan GET layaknya ketika kita menggunakan express ataupun hapi.  Slim ditulis dengan menggunakan php (hypertext pre processor) sehingga kita akan menulis API juga dengan menggunakan php dan tentunnya menggunakan kaidah object oriented programming (OOP).

What will we build

kita akan membangun suatu endpoint untuk API aplikasi pengelola / manajemen catatan (note). Terdapat lima endpoint dengan beragam http method yang akan dibuat. Detail dari endpoint-endpoint tersebut adalah :

Endpoint Method Deskripsi
/note GET Menampilkan seluruh data note dari database.
/note/:id GET Menampilkan data note dari database sesuai dengan id (single get)
/note POST Menambahkan data note ke database
/note/:id PUT Mengubah data note pada database dengan data note baru sesuai dengan id
/note/:id DELETE Menghapus data note sesuai dengan id.

Kelima endpoint tersebut akan kita buat dengan menggunakan framework slim dan nantinnya akan dibagi menjadi file terpisah agar ketika terjadi penambahan endpoint maintain kode dapat dilakukan dengan mudah (terorganisir).

Implementasi

Sebelum melakukan implementasi pastikan anda telah mengerti cara untuk menginstall slim micro framework jika belum anda dapat melihatnya pada ulasan ini.

slim framework – perkenalan & installasi

1.Membuat project slim

Untuk membuat project slim perintah yang digunakan adalah sebagai berikut ini (pastikan composer.phar) telah anda install pada local directory ataukah secara global pada system. Silahkan download di : https://getcomposer.org/download/ (jika belum)

php composer.phar create-project slim/slim-skeleton rest-api

Proses diatas memakan waktu yang cukup lama tergantung dari koneksi internet karena akan mendownload file yang dibutuhkan oleh project slim secara online jadi mohon bersabar. Jika pembuatan project selesai maka pada terminal/command line akan tampak seperti berikut ini

dan pada folder tersebut akan terbuat folder dengana nama  “rest-api” jika sesuai dengan perintah yang kami gunakan diatas.

2.Masuk ke dalam folder project

perintah yang digunakan adalah

cd rest-api

3. Menjalankan server

Jika anda menggunakan slim-skeleton maka secara default telah dibekali dengan built in web server. Hal ini akan memudahkan kita untuk tidak melakukan setup infrastruktur dan dapat langsung fokus untuk melakukan coding. Sangat membantu sekali. Untuk menjalankan built-in web server tersebut perintah yang digunakan adalah

php -S localhost:8080 -t public public/index.php

pastikan anda menjalankan perintah diatas pada folder project slim (skeleton). Tanda bahwa server telah berhasil dijalankan akan tampak seperti ini

Terdapat informasi bahwa server berjalan pada port 8080.  Kita dapat mengarahkan browser untuk mengakses halaman localhost:8080.  Maka akan tampak welcome page dari slim framework yang telah kita install pada folder tersebut.

4. Basic endpoint

berikut ini adalah kode “default” yang disediakan di website slim untuk membuat endpoint secara basic.

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require './vendor/autoload.php';

$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response) {
 $name = $request->getAttribute('name');
 $response->getBody()->write("Hello, $name");

return $response;
});
$app->run();

Kode basic diatas menggunakan dua buah modul yakni ServerRequestInterfaces dan ResponseInterfaces yang digunakan untuk menghandle request dan response.  Intances awal yang dibuat yaitu app() yang melakukan proses instansiasi(proses yang membuat object biasannya ditandai dengan “new” pada SlimApp.

Endpoint yang didefinisikan adalah /hello/{nama} dengan metode http GET. Untuk mendapatkan parameter pada url fungsi yang digunakna yaitu getAttribute(‘nama attribute/parameter’). Untuk memberikan response kepada client digunakanlah fungsi getBody()->write() dan jangan lupa mereturn response tersebut. Jika anda pernah menggunakan framework CI dengan library rest server maka design pattern seperti ini tentu sudah familiar.

Sekarang mari kita test endpoint diatas menggunakan rest client / postman untuk menguji coba apakah endpoint tersebut telah bekerja dengan benar.

it works server memberikan response sesuai dengan kode yang kita tuliskan. Mari kita melanjutkan ke bagian selanjutnya yaitu membuat endpoint sesuai dengan spesifikasi.

5. Membuat endpoint

Sekarang kita akan membuat endpoint yang sesuai dengan spesifikasi web services / API(application programming interfaces) yang akan dibuat. Berikut ini adalah kode endpoint yang sesuai dengan spesifikasi api kita.

<?php use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; require './vendor/autoload.php'; $app = new \Slim\App; // GET note $app->get('/note', function (Request $request, Response $response) {
    $response->getBody()->write("Menampilkan daftar note");

    return $response;
});

// GET Note details

$app->get('/note/{id}', function (Request $request, Response $response) {
    $id = $request->getAttribute('id');
    $response->getBody()->write("Menampilkan detail single note".$id);

    return $response;
});

// POST Note

$app->post('/note', function (Request $request, Response $response) {
    $response->getBody()->write("Menambahkan note");

    return $response;
});

// PUT Note (mengubah note)

$app->put('/note/{id}', function (Request $request, Response $response) {
    $id = $request->getAttribute('id');
    $response->getBody()->write("Mengubah data note pada database.".$id);

    return $response;
});

// DELETE Note (menghapus note)

$app->delete('/note/{id}', function (Request $request, Response $response) {
    $id = $request->getAttribute('id');
    $response->getBody()->write("Menghapus data note pada database.".$id);

    return $response;
});


$app->run();
?>

sekarang kita akan menguji coba seluruh endpoint diatas apakah sudah berjalan atau belum. Perlu di ingat bahwa ulasan ini hanya membahas mengenai pembuatan endpoint dan tidak membahas cara menghandle request ataupun response pada endpoint tersebut. Misalnya pada method POST bagaimana cara mendapatkan request body dan mengirimkan response berupa JSON dari database. Hal-hal tersebut akan dibahas mendalam pada ulasan berikutnya (masih berhubungan dengan ulasan ini).

[GET] /Note

[GET] /note/{id}

[POST] /note

[DELETE] /note/{id}

[PUT] /note/{id}