Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mangoweb/restapipackage
Package for applications with JSON REST API
https://github.com/mangoweb/restapipackage
Last synced: 14 days ago
JSON representation
Package for applications with JSON REST API
- Host: GitHub
- URL: https://github.com/mangoweb/restapipackage
- Owner: manGoweb
- License: other
- Created: 2013-08-16T08:24:46.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2014-05-19T13:14:50.000Z (over 10 years ago)
- Last Synced: 2023-04-05T13:09:25.611Z (over 1 year ago)
- Language: PHP
- Homepage:
- Size: 234 KB
- Stars: 0
- Watchers: 7
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: readme.md
- License: license.md
Awesome Lists containing this project
README
RestApiPackage
===============Balíček pro vytváření JSON REST API v aplikacích založených na *Skeleton21*.
Balíček slouží k verzování a distribuci části funkčnosti webové aplikace včetně presenterů, šablon, rout, migrací atp.
Od běžného composerového balíčku se liší v tom, že jednotlivé části jsou při instalaci rozkopírovány na příslušná místa
skeletonové aplikace.####obsahuje:
- rozšíření uživatele o autentizaci klíčem API (entita `User`)
- logování API požadavků do databáze (entita `ApiRequest`)
- podporu pro API: `ApiPresenter`, `ApiResponse`, `RestRoute`, validaci JSON schémat (balíček *RestApiBase*)####todo:
- presenter pro debugování požadavků na API (přenést z Lamaicy a dodělat)Instalace balíčku:
------------------
Balíčky se instalují *Composerem* pomocí *SkeletonPackageInstalleru*. Ten se stará o zkopírování všech souborů na správná místa.Balíček přidejte do závislostí v souboru `composer.json` v projektu (do sekce require).
Do sekce repositories přidejte další dvě adresy: tento repozitář a RestApiBase.
Spusťte `composer update --prefer-dist`.
V projektu balíček aktivujete zavoláním registrátoru v metodě `onInitModules()` v `Configuratoru`:
public function onInitModules()
{
MyPackageNamespace\Package::register($this);
}Struktura balíčku:
------------------- app (stejné jako je běžná struktura skeletonní aplikace)
- components
- presenters
- templates
- *SomeModule* (modul)
- components
- presenters
- templates
- migrations
- data (obsahuje testovací data pro integrační a seleniové testy)
- struct (obsahuje struktury a *provozní data*)
- tests
- cases
- Selenium
- Unit
- www (assets)Rozšiřitelnost:
---------------
- Routy:
- routy balíčku se registrují až po routách projektu
- to zajistí, že je lze v projektu přetížit
- (canonicalizace přetížených rout zatím není vyřešena)
- Presentery:
- `PresenterFactory` hledá třídu presenteru nejdríve ve jmenném prostoru aplikace, až poté ve jmenném prostoru
balíčku (ten se v `PresenterFactory` musí registrovat)
- presentery v balíčku musí dědit od třídy `Clevis\Skeleton\BasePresenter`
- presentery by neměly rozšiřovat presenter z jiného balíčku (raději použijte kompozici nebo traity)
- Šablony: `TemplateFactory` hledá šablony nejdříve v adresáři aplikace, pak teprve v adresáři balíčku
- aplikační šablona tedy může rozšiřovat šablonu z balíčku, aniž by bylo třeba cokoliv nastavovat
- pro zjednodušení jsou šablony z balíčku zkopírovány do adresáře `/app[/Module]/templates/{Presenter}/package/`
- Služby a komponenty:
- služby se definují v konfiguračním souboru `config.neon`
- konfiguráky balíčku se načítají před konfiguráky aplikace, proto může aplikace výchozí nastavení upravit
- Helpery:
- (zatím není nijak vyřešeno)Testy:
------
- Testy v balíčku by měly dědit od `Tests\Unit\TestCase` nebo `Test\Selenium\SeleniumTestCase` (nejspíše se změní)
- Prozatím je počítáno pouze se spouštěním testů z prostředí *Skeletonu*Migrace:
--------
- **Obecné pravidlo migrací je, že migrace se nesmí nikdy editovat. Každá úprava databáze musí být v novém souboru.**
- Migrace z balíčku je ale možné editovat právě jednou po připojení balíčku k projektu, aby se zabránilo případným kolizím
s migracemi z jiných balíčků či z projektu. Instalátor balíčku totiž při jeho
aktualizaci **již jednou nainstalované migrace nepřepisuje**
- **Soubor migrace nelze z aplikace odstranit** - instalátor by ho totiž při updatu opětovně přidal. Pokud je třeba
migraci vyřadit, je možné ji přepsat prázdným příkazem (např. `SELECT 1;`)
- **Při odinstalování balíčku zůstávají jeho migrace na místě.** Migrace jsou nevratné a odebrat je nelze. Pokud je to nutné,
je třeba stav databáze změnit reverzní migrací
- **Balíček nesmí měnit nebo odebírat sloupce/tabulky/indexy atd., které sám nepřidal**