@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
    • 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
      • neobsahuje ŽÁDNOU LOGIKU! Pouze gettery, settery

# 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