Native PHP - REST API

?php

/* USAGE (cara penggunaan)

1. mode GET

fetch('?cmd=data-01').then(a=>a.json()).then(result => { console.log(result) }).catch(a => { console.log(a) })
fetch('?cmd=data-01&prm1=bla').then(a=>a.json()).then(result => { console.log(result) }).catch(a => { console.log(a) })



1. mode POST

const a = new FormData()
a.append('cmd', 'data-01')
fetch('', { method:'POST', body:a }).then(a=>a.json()).then(result => { console.log(result) }).catch(a => { console.log(a) })


const a = new FormData()
a.append('cmd', 'data-01')
a.append('param1', 'bla')
fetch('', { method:'POST', body:a }).then(a=>a.json()).then(result => { console.log(result) }).catch(a => { console.log(a) })

*/


if ($_SERVER['REQUEST_METHOD'] === 'GET') {

	if (!isset($_GET['cmd'])) {
		echo json_encode(['status' => 400, 'msg' => 'cmd not set!']);
		exit();
	}
	
	$db = new mysqli("host", "user", "password", "db");
	
	if ($db -> connect_errno) {
		echo json_encode(['status' => 500, 'msg' => $db -> connect_error]);
		exit();
	}
	
	switch ($_GET['cmd']) {
		
		case 'data-01' :
			$q = "SELECT bla..";
			
			$q = $db->query($q);
			
			$a = [];
			while ($b = $q->fetch_assoc()) { $a[] = $b; }
			$q->free_result();
			$db->close();
			
			echo json_encode(['status' => 200, 'data' => $a]);
			
		break;
		
		case 'data-02' :
			$q = "SELECT bla.." . $_GET['prm1'];
			
			$q = $db->query($q);
			
			$a = [];
			while ($b = $q->fetch_assoc()) { $a[] = $b; }
			$q->free_result();
			$db->close();
			
			echo json_encode(['status' => 200, 'data' => $a]);
			
		break;
		
		default:
			echo json_encode(['status' => 400, 'msg' => 'unknown cmd ' . $_GET['cmd']]);
		break;
	}
	
} else if ($_SERVER['REQUEST_METHOD'] === 'POST') {
	
	if (!isset($_POST['cmd'])) {
		echo json_encode(['status' => 400, 'msg' => 'cmd not set!']);
		exit();
	}
	
	$db = new mysqli("host", "user", "password", "db");
	
	if ($db -> connect_errno) {
		echo json_encode(['status' => 500, 'msg' => $db -> connect_error]);
		exit();
	}
	
	switch ($_POST['cmd']) {
		
		case 'data-01' :
			$q = "SELECT bla..";
			
			$q = $db->query($q);
			
			$a = [];
			while ($b = $q->fetch_assoc()) { $a[] = $b; }
			$q->free_result();
			$db->close();
			
			echo json_encode(['status' => 200, 'data' => $a]);
			
		break;
		
		case 'data-02' :
			$q = "SELECT bla.." . $_POST['param1'];
			
			$q = $db->query($q);
			
			$a = [];
			while ($b = $q->fetch_assoc()) { $a[] = $b; }
			$q->free_result();
			$db->close();
			
			echo json_encode(['status' => 200, 'data' => $a]);
			
		break;
		
		default:
			echo json_encode(['status' => 400, 'msg' => 'unknown cmd ' . $_POST['cmd']]);
		break;
	}
	
} else {
	echo json_encode(['status' => 400, 'msg' => 'Bad Request']);
}
?>