Voorkennis
- Basis programmeren; variabelen, if-else, arrays, loops, functions en parameters
- Renderen (verzamelen gegevens, bijvoorbeeld gegevens in één lange string verzamelen)
- Structuur-> eerst logica, daarna weergave.
- Jsons structuur
Dit ga je leren
- Data uit de database ophalen op basis van parameters in de URL
- Het databaseresultaat omzetten in een array (ongeacht het aantal rijen, kolommen en kolom-namen)
- Een array omzetten in JSON en dit weergeven in een 'pretty' (nette) vorm.
Opdracht
- Maak een index-file.
- Maak een database met daarin een database-tabel aan en vul deze met records
- De volgende PHP-code kan worden gebruikt als voorbeeld om json-data te tonen op bijvoorneeld de url's:
- http://localhost/api_basic/index.php?find=2 // toont record met id 2
- http://localhost/api_basic/index.php?find=all // toont alle records
- http://localhost/api_basic/index.php // toont een boodschap in json
<?php
///// create a db-connection
$conn = new mysqli('localhost', 'root', '', 'pao_beer'); // Create connection
if ($conn->connect_error) { // Check connection
die("Connection failed: " . $conn->connect_error);
}
///// selecting SQL-query based on parameter in url
if(!empty($_GET['find']) && is_numeric($_GET['find'])) {
$sql = 'SELECT * FROM `beers` WHERE `id` ="'.$_GET['find'].'"';
}
elseif(!empty($_GET['find']) && $_GET['find'] == 'all') {
$sql = "SELECT * FROM `beers`";
}
///// creating array with result
if(!empty($sql)) {
$result = $conn->query($sql);
$collection=[];
if ($result->num_rows > 0)
{
while($row=$result->fetch_assoc()){
$collection[]=(object)$row; // create an array with a numeric row-keys and row-data for each row
}
}
}
else {
$collection = ['title'=>'My API-server'];
}
///// showing data in json
$out = array_merge(['meta' =>['count'=>count($collection)]],['data' =>$collection]);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($out, JSON_PRETTY_PRINT);
die;
?>
Alle request worden getest met een API-testtool, zoals Postman ,
bekijk eventueeel de Postman-les
- Reorganiseer jouw code;
plaats alle mogelijkheden in aparte PHP-functies, die ook in aparte files worden geplaatst. - Breidt de mogelijkheden uit met o.a. pagination en sorteren, beide bepaald door extra parameters in de url toe te voegen.
Breidt mete-key uit met een de volgende key's en nuttige correcte informatie;- page (de page waarop je zit bij pagination)
- sort (de page waarop je zit bij op welk veld er wordt gesorteerd en welke richting; ASC of DESC)
- Kijk of alles nog steeds werkt zoals bedoeld
Op te leveren
- Een werkend API-server die data op verschillende manieren toon in json op basis van de url.
- Het testen van de API-request wordt met PostMan uitgevoerd
Evaluatie
Vraag om een code-review om feedback op jouw aanpak en tips voor best-practices te krijgen.