Files
api-btekno/API_LOCAL_TEST_RESULTS.md

124 lines
3.7 KiB
Markdown

# 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
<?php
$file = __DIR__ . $_SERVER['REQUEST_URI'];
if (file_exists($file) && is_file($file) && $_SERVER['REQUEST_URI'] !== '/') {
return false;
}
require __DIR__ . '/index.php';
```
**Cara menjalankan**:
```bash
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:
```javascript
return 'http://localhost/api-btekno/public';
```
**Untuk PHP built-in server (port 8000)**, ubah menjadi:
```javascript
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)
```bash
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
- [x] Health endpoint berfungsi
- [x] Authentication endpoint berfungsi
- [x] Frontend endpoints terdaftar
- [x] Dashboard endpoints terdaftar
- [x] Realtime endpoints terdaftar
- [x] JWT middleware bekerja
- [x] CORS middleware aktif
- [x] 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:
```bash
# 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"
```