Ronald Kerssies | Mar 24, 2023

Basic API

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.
image functions

Opdracht

  1. Maak een index-file.

  2. Maak een database met daarin een database-tabel aan en vul deze met records

  3. 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 postman, bekijk eventueeel de Postman-les

  1. Reorganiseer jouw code;
    plaats alle mogelijkheden in aparte PHP-functies, die ook in aparte files worden geplaatst.

  2. 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)

  3. 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.