REST API: API platform

3. července 2019

REST API je nějaký ten rok populární. Někde už vlna této technologie odezněla někde ještě ani neví co to je. Nejedná se o nic jiného než užití HTTP protokolu jako základ pro definici nějakého standartu. Více o REST na Wikipedii.

Když je nějaký standart tak vznikají knihovny, které umožňují efektivně dané technologie používat. Efektivně znamená že:

  • návrh technologie/knihovny bude lepší, protože se tomu věnovalo více lidí
  • nemusím znova psát již hotové
  • knihovnu někdo udržuje
  • kód vidělo víc lidi
Programátor se tak může soustředit na naučení dané technologie, knihovny a implementaci technologie do jeho aplikace.

Jednou z implementací REST API pro PHP je API Platform, která je primárně vyvíjená pro framework Symfony

Než zdlouhavě popisovat co a jak, ukáži pár příkladů a podrobnosti z použití jsou ve videu na konci tohoto článku. Pro podrobnější informace doporučuji wikipedii, googl a dokumentaci.

Požadavky

Pro zprovoznění budete potřebovat:

  • composer
  • php7
  • symfony, doctrine
  • database - např mysql

Použití


Jak začít používat REST a použitím API Platform? Jednoduše zde je malá ukázka.

Založení projektu:

$ composer create-project symfony/skeleton bookshop-api
$ cd bookshop-api

$ composer req api
Nastavíme připojení k databázi:
$ export DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name
Vytvoříme databázi a databázového uživatele s právy:
MariaDB [(none)]> create database db_name;
MariaDB [(none)]> create user db_user@localhost identified by 'db_password';
GRANT ALL PRIVILEGES ON db_name. * TO 'db_user'@'localhost';


MariaDB [(none)]> flush privileges;
$ bin/console doctrine:schema:create
Spuštení aplikace:
$ php -S *1:8000 -t public
Symfony aplikace je pak dostupná na:
http://192.165.85.12:8000
API je dostupné na:
http://192.165.85.12:8000/api
Vytvoříme dle již dvou definovaných souborů entity:
bin/console doctrine:schema:update --force
Do PHP kód doplníme k entite anotace:
use ApiPlatform\Core\Annotation\ApiResource;
/**
 * ...
 *
 * @ApiResource
 */
 
A již můžeme na URL s vizuální prezentací API testovat API pres POST a GET HTTP dotazy. api-platform-rest.png
{
  "isbn": "9781782164104",
  "title": "Persistence in PHP with the Doctrine ORM",
  "description": "This book is designed for PHP developers ... better understanding of Persistence and ORM.",
  "author": "Kévin Dunglas",
  "publicationDate": "2013-12-01"
}
{
    "book": "/books/1",
    "rating": 5,
    "body": "Interesting book!",
    "author": "Kévin",
    "publicationDate": "September 21, 2016"
}
api-platform-entita.png

Video

Live-stream s praktickou ukázkou nasazení:

Zdroje

zdroj a dokumentace api platform