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']);
}
?>