Hned první věc kterou najde google na dotaz php rest api je tento tutoriál:
https://www.codeofaninja.com/2017/02/create-simple-rest-api-in-php.html
Žádný framework to nepoužívá, a nic složitého tam taky není.
Nič zložitého to možno nie je, pretože tak veľa ešte treba dopracovať.
Ten tutoriál je plný chýb. Začiatočník by rozhodne nemal začínať na čistom PHP (iba ak pre učenie), mal by začať so Symfony alebo Laravel. Svoj vlastný framework/aplikáciu bez frameworku si môže dovoliť len naozaj pokročilý programátor. Autor hore uvedeného tutoriálu ním zatiaľ nie je, má sa čo učiť. Námatkovo vyberiem chyby.
// specify your own database credentials
private $host = "localhost";
private $db_name = "api_db";
private $username = "root";
private $password = "";
public $conn;
Configuračné dáta sa dávajú zvlášť do súborou. Navyše, uloženie účtu a hesla treba riešiť zvlášť. Heslo treba tiež
samozrejme zakryptovať.
try{
$this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
$this->conn->exec("set names utf8");
}catch(PDOException $exception){
echo "Connection error: " . $exception->getMessage();
}
Pokiaľ viem, v PHP by sa takto nemali riešiť výnimky. Majú sa nechať vybublať. A keď už ich zachytávame, tak ich nevypisujeme, ale logujeme. Nastaviť logovanie a všetko s tým spojené je fuška.
header("Access-Control-Allow-Origin: *");
Bezpečnostná chyba.
$query = "SELECT
id, name, description
FROM
" . $this->table_name . "
ORDER BY
name";
$stmt = $this->conn->prepare( $query );
$stmt->execute();
Toto tiež nevyzerá dobre, SQL príkazy sa nesmú takto spájať. Aj keď v tomto prípade zrejme nedôjde k SQL Injection, takto programovať je bezpečnostné riziko.
$keywords=isset($_GET["s"]) ? $_GET["s"] : "";
Toto je nedostatočná validácia.
Frameworku sú tu z určitého dôvodu. Aby sa predchádzalo chybám a znovuvynaliezaniu kolesa. Opakujem, vlastný framework si môže vytvoriť len naozaj skúsený programátor. Ostatní, študovať Laravel a Symfony.