REST API: API platform

3. července 2019

Lang: cs en de es

Jak provozovat webovou aplikaci jako REST API? K tomu se hodí knihovna API Platform. Zde popíši jak udělat REST APi za pomoci Symfony a knihovny API Platform.

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 standardu. Více o REST na Wikipedii.

Když je nějaký standard 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

Články na podobné téma

Analýza zadání a nacenění vývoje softwarového projektu
Python program na ovládání Dockeru pomocí API
Jak použít aplikaci MailCatcher pro testování emailů
Návod: Python OpenAI API
Vytvoření WebSocket webové aplikace a nastavení proxy
Řízení projektů: Agilní vývoj softwaru
Jak provozovat staré PHP aplikace
Co by měl umět dobrý programátor
Programovací jazyk Rust
NodeJS: vývoj, konfigurace serveru
Nette security bug CVE-2020-15227
Jak porovnat dvě stejné databáze?
Vlastní web a mail hosting se softwarem ISP Config
Programovní v SQL: PostgreSQL, MySQL/MariaDB
HTTPS: zabezpečený web
NoSQL databáze Mongo DB
Připojení k Microsoft SQL Serveru z Linuxu
Co je pracovní náplň programátora
Lokalizace aplikací v jazyce Python
Jaký mail a web hosting vybrat
How to make wireless low power Arduino
Digispark - Programujte mikrokontrolér Atmel ATtiny pomocí Arduino IDE
Program Roulette
Vývoj pro procesory ARM s Arduino IDE
Wireless low power Arduino
Pyradio - Python program for receive Internet radio with text user inteface
UPS monitor pro Android
Bezdrátový bateriově napájený WiFi teploměr
Jak programovat WiFi procesor ESP8266
Comparison IQRF vs Wireless Arduino
Jakou platformu zvolit pro eshop? Například Prestashop
Development kits and gateways for wireless platform IQRF

OpenStreetMap a GPS trasy v mapě na webu
Quickplay
Java program pro přehledné monitorování záložních zdrojů
Čipové kontaktní a bezkontaktní karty Java Card OpenPlatform
Otevřený chytrý telefon s Linuxem - Openmoko Neo FreeRunner
Vývoj pro bezdrátové moduly s procesorem PIC pod GNU/Linux - IQRF
Grafický program pro embeded/mobilní zařízení na vyhledávání dopravního spoje.
O programování a ruzné programy v jazyce Java, Python a dalších
Java program a applet Kalkulačka
Java program na výpočet kvadratické rovnice

Odběr novinek

Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k odběru novinek.


+