@designeo
Welcome to your VuePress site
# API
Backend slouží pouze pro API FE je Vue.js
Refy - slouží ke komunikaci mezi FE a BE
- používáme JMS serializer
- do entit používáme vlastní serializery, viz níže
# Architektura
Principy
- služby neinjectují služby na stejné úrovni kvůli cyklické závislosti
Rozdělení
Controller - neobsahují logiku, odkazují se na fasádu (každý má svoji fasádu)
Facade - odkazují se na dílčí služby, které obstarávají logiku (ActionServices)
Serializer, Transformer
- Serializer
- slouží k deserializaci vstupu, tj. propsání vstupního refu do entity, a k serializaci výstupu z endpointu
- serializer NIKDY neinjectuje další serializery (kvůli cyklické závislosti a nulové přehlednosti)
- může injectovat pouze ReferenceResolver, viz sekce Přehled bundles
- když v refu dostaneme id nějaké vazebné entity a chceme jej uložit, můžeme ho převést na referenci pomocí ReferenceResolveru a následně použít v setteru pro danou vazbu
- serializer pracuje pouze s jednou entitou/refem a id vazebných entit. Pokud potřebujeme (de)serializovat zanořený ref, použijeme Transformer
- Transformer
- slouží k (de)serializaci zanořených refů tak, že volá metody jednotlivých serializerů a skládá výsledek
- neinjectuje další transformery
- Serializer
model, repozitář
- nepřistupovat k repozitáři přímo, ale pouze přes model. Model slouží jako "obálka" pro repozitář
- provider? TODO:
ActionService
- ve složce App/Service
- provádí jednu konktrétní činnost, např. AircraftPerformanceCalculator - spočítá statistiky pro letadlo
- stateless - NEOBSAHUJE DATA, protože je to singleton
- k předávání a uchování dat se používá Crate
Crate
- slouží pro předávání dat mezi službami, protože:
- nikdy nepředáváme skalární proměnné do metody odkazem pomocí
&
. Proto použijeme Crate. - nechceme zbytečně používat asociativní pole
- nikdy nepředáváme skalární proměnné do metody odkazem pomocí
- neobsahuje ŽÁDNOU LOGIKU! Pouze gettery, settery
- slouží pro předávání dat mezi službami, protože:
# ControllerListener
- řeší deserializaci a validaci refů před vstupem do akce controlleru a serializaci pro výstup. Validace mají probíhat ještě před vstupem do akce controlleru.
# Entity
- zákládají se pomocí modelu, každá entita má svůj model
- FlushModeEnum (deprecated)
# apidoc
- localhost:8000/doc/api
- zde je možné si vyzkoušet api
- basic auth se ověřuje proti uživatelům v databázi
- z refů se generují informace pro FE, který si pak podle toho generuje struktury akcí, refů...
- ControllerDescriptor