Files
api-btekno/API_LOCAL_TEST_RESULTS.md

3.7 KiB

Hasil Test API Lokal

Status API Server

Base URL: http://localhost:8000

Router Script: public/router.php (untuk PHP built-in server)

📋 Hasil Test Endpoint

1. Health Check

  • Endpoint: GET /health
  • Status: 200 OK
  • Response: {"status":"ok","time":1766023404}

2. Authentication

  • Endpoint: POST /auth/v1/login
  • Status: 401 (Expected - butuh credentials valid)
  • Note: Endpoint berfungsi, hanya butuh username/password yang valid

3. Frontend Locations

  • Endpoint: GET /retribusi/v1/frontend/locations
  • Status: 401 (Expected - butuh JWT token)
  • Response: {"error":"unauthorized","message":"Authentication required"}

4. Dashboard Summary

  • Endpoint: GET /retribusi/v1/dashboard/summary
  • Status: 401 (Expected - butuh JWT token)
  • Response: {"error":"unauthorized","message":"Invalid or expired token"}
  • Note: Route ditemukan dengan benar (bukan 404)

5. Realtime Snapshot

  • Endpoint: GET /retribusi/v1/realtime/snapshot
  • Status: 401 (Expected - butuh JWT token)
  • Note: Route ditemukan dengan benar

🔧 Perbaikan yang Dilakukan

1. Router Script untuk PHP Built-in Server

File: api-btekno/public/router.php

Dibuat router script untuk PHP built-in server agar routing bekerja dengan benar:

<?php
$file = __DIR__ . $_SERVER['REQUEST_URI'];
if (file_exists($file) && is_file($file) && $_SERVER['REQUEST_URI'] !== '/') {
    return false;
}
require __DIR__ . '/index.php';

Cara menjalankan:

cd api-btekno/public
php -S localhost:8000 router.php

2. Konfigurasi Frontend

File: retribusi (frontend)/public/dashboard/js/config.js

Untuk development lokal, base URL sudah di-set ke:

return 'http://localhost/api-btekno/public';

Untuk PHP built-in server (port 8000), ubah menjadi:

return 'http://localhost:8000';

📝 Catatan

  1. Status 401 = Normal: Semua endpoint protected mengembalikan 401 jika tidak ada JWT token yang valid. Ini adalah behavior yang benar.

  2. Status 404 = Route tidak ditemukan: Jika endpoint mengembalikan 404, berarti route tidak terdaftar atau ada masalah dengan routing.

  3. Router Script: PHP built-in server memerlukan router script untuk menangani routing dengan benar. Tanpa router script, semua request akan diarahkan ke file yang ada di filesystem.

🚀 Cara Menggunakan

Option 1: PHP Built-in Server (Development)

cd api-btekno/public
php -S localhost:8000 router.php

Frontend Config: http://localhost:8000

Option 2: Laragon/Apache (Production-like)

Setup virtual host di Laragon:

  • Document Root: C:\laragon\www\RETRIBUSI_BAPENDA\api-btekno\public
  • URL: http://api.retribusi.test atau http://localhost/api-btekno/public

Frontend Config: http://api.retribusi.test atau http://localhost/api-btekno/public

Checklist

  • Health endpoint berfungsi
  • Authentication endpoint berfungsi
  • Frontend endpoints terdaftar
  • Dashboard endpoints terdaftar
  • Realtime endpoints terdaftar
  • JWT middleware bekerja
  • CORS middleware aktif
  • Router script untuk PHP built-in server
  • Test dengan JWT token valid (butuh login dulu)
  • Test semua endpoint dengan token valid

🔐 Testing dengan Token Valid

Untuk test dengan token valid, perlu login dulu:

# 1. Login
curl -X POST http://localhost:8000/auth/v1/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"password"}'

# 2. Gunakan token dari response untuk test endpoint lain
curl http://localhost:8000/retribusi/v1/dashboard/summary?date=2025-01-18 \
  -H "Authorization: Bearer YOUR_TOKEN_HERE"