Tutorial API dan Postman Bagian #2 (API PHP Native)

Latihan API Login (Authentication Sederhana) menggunakan PHP + MySQL dengan input JSON (raw) di Postman.

Target latihan:

  • Membuat tabel user
  • Menyimpan password dengan hash
  • Membuat endpoint login.php
  • Mengirim data JSON dari Postman
  • Memvalidasi email & password

Buat Tabel User

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(100),
    email VARCHAR(100) UNIQUE,
    password VARCHAR(255)
);

Insert user contoh (password di-hash) misal buat file password.php lalu akses http://localhost/api-siswa/password.php:

<?php
echo password_hash("admin1234", PASSWORD_DEFAULT);

Ambil hasil hash lalu jalankan di MySQL:

INSERT INTO users (nama, email, password) VALUES
('Admin', 'engkuskusnadifuture@gmail.com', '$2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxx');

(Ganti $2y$10$... dengan hasil hash dari PHP)


Endpoint Login (login.php)

<?php
include 'koneksi.php';
header("Content-Type: application/json");

// Ambil data JSON dari body
$data = json_decode(file_get_contents("php://input"), true);

$email = $data['email'] ?? '';
$password = $data['password'] ?? '';

if ($email == '' || $password == '') {
    echo json_encode([
        "status" => false,
        "message" => "Email dan password wajib diisi"
    ]);
    exit;
}

// Cari user berdasarkan email
$query = $conn->query("SELECT * FROM users WHERE email='$email'");

if ($query->num_rows == 0) {
    echo json_encode([
        "status" => false,
        "message" => "Email tidak terdaftar"
    ]);
    exit;
}

$user = $query->fetch_assoc();

// Verifikasi password
if (password_verify($password, $user['password'])) {
    echo json_encode([
        "status" => true,
        "message" => "Login berhasil",
        "data" => [
            "id" => $user['id'],
            "nama" => $user['nama'],
            "email" => $user['email']
        ]
    ]);
} else {
    echo json_encode([
        "status" => false,
        "message" => "Password salah"
    ]);
}

Test Login di Postman

  • Method: POST
  • URL:
http://localhost/api-siswa/login.php
  • Headers:
Content-Type: application/json
  • Body → raw → JSON:
{
    "email": "engkuskusnadifuture@gmail.com",
    "password": "admin1234"
}

Response Berhasil

{
    "status": true,
    "message": "Login berhasil",
    "data": {
        "id": 1,
        "nama": "Admin",
        "email": "engkuskusnadifuture@gmail.com"
    }
}

Response Gagal

{
    "status": false,
    "message": "Password salah"
}

Tugas Latihan Mandiri

  1. Tambahkan endpoint register.php dengan input JSON:
{
  "nama": "Budi",
  "email": "budi@gmail.com",
  "password": "123456"
}
  1. Saat register:
  • Password wajib di-hash (password_hash)
  • Email tidak boleh sama
  1. cek API Login menggunakan user yang baru ditambahkan dengan memasukan email dan password apakah berhasil memunculkan status 200 OK
  1. Langkah Alur Uji coba :
Register → Login → Akses API GET users
Tags :

Leave a Reply

Your email address will not be published. Required fields are marked *

14 − 7 =

Tutorial Terpopuler

Tutorial Pilihan

Tentang Gurututorku

Gurututorku adalah sebuah kursus online maupun offline yang menyediakan berbagai macam tutorial tentang pemrograman, design, dan multimedia serta artikel teknologi yang tentunya bisa dinikmati dan dipelajari oleh semua orang yang baru ingin belajar dunia IT.

© 2024 – Gurututorku.com | Learning today success tomorrow.