Logo Universitas Teknokrat Indonesia

Memulai Proyek Slim: Panduan Langkah demi Langkah Membuat REST API Sederhana

Kategori: Teknologi
Gambar untuk Memulai Proyek Slim: Panduan Langkah demi Langkah Membuat REST API Sederhana

Dalam dunia pengembangan web modern, REST API adalah fondasi dari banyak aplikasi, mulai dari aplikasi seluler hingga single-page application (SPA) berbasis JavaScript. REST API berfungsi sebagai jembatan komunikasi antara front-end dan back-end, memungkinkan pertukaran data secara efisien. Meskipun ada banyak kerangka kerja (framework) untuk membangun API, memilih yang tepat bisa sangat menentukan keberhasilan proyek. Di sinilah Slim Framework bersinar.

Slim adalah micro-framework PHP yang didesain untuk menjadi minimalis, cepat, dan kuat. Ia menyediakan fitur inti yang Anda butuhkan untuk membangun aplikasi web dan REST API tanpa tambahan yang tidak perlu. Panduan ini akan membawa Anda langkah demi langkah untuk memulai proyek Slim, membuat REST API sederhana, dan memahami konsep-konsep dasarnya. Siap untuk membangun API pertama Anda? Mari kita mulai.

Baca juga :JavaScript Bukan Hanya untuk Website: Mengapa Bahasa Ini Menggerakkan Aplikasi Modern dan AI


Langkah 1: Persiapan Lingkungan Pengembangan

Sebelum memulai, pastikan Anda memiliki prasyarat berikut:

  • PHP: Versi 7.4 atau lebih baru.
  • Composer: Manajer dependensi untuk PHP. Jika belum, unduh dan instal dari situs resminya.
  • Server Lokal: Seperti XAMPP, WAMP, MAMP, atau server bawaan PHP. Panduan ini akan menggunakan server bawaan PHP untuk kesederhanaan.

Setelah semua siap, buka terminal atau command prompt Anda.

Langkah 2: Menginstal Slim Framework

Composer adalah cara terbaik untuk menginstal Slim. Buka terminal Anda, navigasi ke direktori proyek Anda (misalnya api-project), dan jalankan perintah berikut:

Bash

composer require slim/slim
composer require slim/psr7
composer require guzzlehttp/psr7
composer require guzzlehttp/psr7-factory

Perintah ini akan menginstal Slim Framework, bersama dengan dependensi yang diperlukan untuk menangani standar PSR-7 (HTTP Message Interface). Slim bergantung pada standar ini untuk mengelola permintaan (request) dan respons (response) HTTP.

Langkah 3: Membuat File Proyek

Setelah instalasi selesai, buat struktur direktori dasar. Di dalam direktori proyek Anda, buat sebuah file bernama public/index.php. File ini akan menjadi entry point (titik masuk) dari aplikasi web Anda.

Struktur Direktori:

api-project/
├── vendor/
├── public/
│   └── index.php
└── composer.json
└── composer.lock

Sekarang, buka file public/index.php dan tambahkan kode dasar Slim.

PHP

<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;

require __DIR__ . '/../vendor/autoload.php';

$app = AppFactory::create();

// Menggunakan ErrorMiddleware untuk menampilkan error dengan rapi
$app->addErrorMiddleware(true, true, true);

// Menambahkan routing dasar
$app->get('/', function (Request $request, Response $response, array $args) {
    $response->getBody()->write("Selamat datang di API Slim!");
    return $response;
});

// Jalankan aplikasi
$app->run();

Langkah 4: Menjalankan Aplikasi Pertama Anda

Sekarang, saatnya melihat aplikasi Anda berjalan. Buka terminal di dalam direktori api-project dan jalankan server bawaan PHP dengan perintah berikut:

Bash

php -S localhost:8080 -t public

Perintah ini akan menjalankan server lokal di localhost port 8080 dan menunjuk direktori public sebagai root dokumen.

Buka browser Anda dan kunjungi http://localhost:8080. Anda akan melihat teks "Selamat datang di API Slim!". Selamat, Anda telah berhasil menjalankan aplikasi Slim pertama Anda!

Langkah 5: Membangun REST API Sederhana

Sekarang mari kita tingkatkan proyek kita dengan membuat REST API sederhana untuk mengelola daftar buku. Kita akan membuat API dengan beberapa endpoint dasar:

  • GET /api/buku: Mengambil daftar semua buku.
  • GET /api/buku/{id}: Mengambil detail buku berdasarkan ID.
  • POST /api/buku: Menambahkan buku baru.

Untuk kesederhanaan, kita akan menggunakan array PHP sebagai pengganti database.

Tambahkan kode berikut ke file public/index.php di bawah $app->get('/'):

PHP

// Simpan data buku di dalam array
$buku = [
    [
        'id' => 1,
        'judul' => 'Sapiens: A Brief History of Humankind',
        'penulis' => 'Yuval Noah Harari'
    ],
    [
        'id' => 2,
        'judul' => 'The Lord of the Rings',
        'penulis' => 'J.R.R. Tolkien'
    ]
];

// Endpoint GET untuk mengambil semua buku
$app->get('/api/buku', function (Request $request, Response $response, array $args) use ($buku) {
    $payload = json_encode($buku);
    $response->getBody()->write($payload);
    return $response
            ->withHeader('Content-Type', 'application/json')
            ->withStatus(200);
});

// Endpoint GET untuk mengambil buku berdasarkan ID
$app->get('/api/buku/{id}', function (Request $request, Response $response, array $args) use ($buku) {
    $id = (int)$args['id'];
    $bukuDitemukan = null;
    foreach ($buku as $item) {
        if ($item['id'] === $id) {
            $bukuDitemukan = $item;
            break;
        }
    }

    if ($bukuDitemukan) {
        $payload = json_encode($bukuDitemukan);
        $response->getBody()->write($payload);
        return $response
                ->withHeader('Content-Type', 'application/json')
                ->withStatus(200);
    } else {
        $payload = json_encode(['error' => 'Buku tidak ditemukan']);
        $response->getBody()->write($payload);
        return $response
                ->withHeader('Content-Type', 'application/json')
                ->withStatus(404);
    }
});

// Endpoint POST untuk menambahkan buku baru
$app->post('/api/buku', function (Request $request, Response $response, array $args) {
    $data = $request->getParsedBody();
    
    // Validasi data
    if (!isset($data['judul']) || !isset($data['penulis'])) {
        $payload = json_encode(['error' => 'Data tidak valid']);
        $response->getBody()->write($payload);
        return $response
                ->withHeader('Content-Type', 'application/json')
                ->withStatus(400);
    }

    $bukuBaru = [
        'id' => count($GLOBALS['buku']) + 1, // Anggap saja ID
        'judul' => $data['judul'],
        'penulis' => $data['penulis']
    ];

    $GLOBALS['buku'][] = $bukuBaru; // Menambahkan buku ke array global

    $payload = json_encode($bukuBaru);
    $response->getBody()->write($payload);
    return $response
            ->withHeader('Content-Type', 'application/json')
            ->withStatus(201);
});

6. Menguji REST API Anda

Untuk menguji endpoint API Anda, Anda bisa menggunakan alat seperti Postman, Insomnia, atau ekstensi REST Client di Visual Studio Code.

  • Menguji GET /api/buku:
    • Metode: GET
    • URL: http://localhost:8080/api/buku
    • Hasil: Anda akan mendapatkan respons JSON berisi daftar buku.
  • Menguji GET /api/buku/{id}:
    • Metode: GET
    • URL: http://localhost:8080/api/buku/1
    • Hasil: Respons JSON berisi detail buku dengan ID 1. Jika Anda menggunakan ID yang tidak ada, Anda akan mendapatkan respons error 404.
  • Menguji POST /api/buku:
    • Metode: POST
    • URL: http://localhost:8080/api/buku
    • Body: Pilih raw dan JSON, lalu masukkan data berikut:JSON{ "judul": "The Hitchhiker's Guide to the Galaxy", "penulis": "Douglas Adams" }
    • Hasil: Anda akan mendapatkan respons JSON berisi detail buku yang baru saja ditambahkan, dengan status 201 Created.

Konsep Penting yang Telah Anda Pelajari

Dengan panduan ini, Anda telah menyentuh beberapa konsep inti yang membuat Slim begitu efisien:

  • Routing: Slim menyediakan cara yang intuitif untuk mendefinisikan rute dan menghubungkannya dengan fungsi (Closure) yang akan dieksekusi.
  • Request & Response (PSR-7): Slim menggunakan objek Request dan Response yang standar, memungkinkan Anda untuk memanipulasi header, body, dan status HTTP dengan cara yang konsisten.
  • Middleware: Meskipun kita tidak membuat middleware kustom, fungsi addErrorMiddleware() menunjukkan bagaimana middleware dapat disuntikkan ke dalam alur eksekusi aplikasi untuk menangani tugas-tugas cross-cutting seperti penanganan kesalahan.
  • Simplicity: Seluruh API kita ada dalam satu file, yang sangat cocok untuk proyek-proyek kecil dan mikroservis.

Baca juga : Workshop Inovasi Robot Mobile dan Alat Pintar Deteksi Kebencanaan di SMA Negeri 2 Tulang Bawang Tengah


Kesimpulan

Anda telah berhasil membangun REST API pertama Anda dengan Slim, dari instalasi hingga pengujian endpoint. Panduan ini menunjukkan bahwa Slim benar-benar minimalis dan mudah digunakan, memungkinkan Anda untuk fokus pada logika inti API Anda tanpa terbebani oleh fitur-fitur yang tidak diperlukan.

Ini hanyalah awal dari apa yang bisa Anda lakukan dengan Slim. Anda bisa menambahkan sistem database, template engine, atau sistem otentikasi dengan mengintegrasikan library yang kompatibel dengan standar PSR. Filosofi minimalis Slim memberikan Anda kebebasan untuk memilih alat terbaik untuk setiap pekerjaan.

Apakah Anda tertarik untuk mengintegrasikan database ke dalam proyek API ini?

Penulis : Naysila pramuditha azh zahra