Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Hypermedia as the Engine of Application State (HATEOAS) zu Deutsch: Hypermedia als Motor des Anwendungs-Zustands, beschreibt einen Quasi-Standard für REST-Architekturen.
Dabei stellt der Server dem Client, von den angenommen wird, dass er keine weiteren Vorkenntnisse über den Service hat, verwandte Services als Links zur Verfügung.
Der Client kann damit theoretisch on Demand weitere Informationen aus den bereits erhaltenen Daten gewinnen.

...

MethodeSignaturParameter
getLink
public function getLink(Restful\Lib\Entity\RestPage $restPage, ?int $id = null): string;
RestPage, id des zu Grunde liegenden Datensatzes

...

  • Es existieren 4 REST-Pages
    • eine vom Typ Liste für Artikel
    • eine vom Typ Karte für Artikel
    • eine vom Typ Eltern für Artikelgruppe > Artikel
    • eine vom Typ Kinder für Artikel > Artikelvariante
  • Anforderung: die Ergebnisse aus der Liste sollen pro Datensatz einen Link zur Karte des Datensatzes, den Eltern des Datensatzes (Artikelgruppen) sowie den Kindern des Datensatzes (Artikelvarianten) erhalten
  • Konfiguration: die Verknüpfungskette wird logisch von oben nach unten aufgebaut:
    • Die REST-Page vom Typ Eltern erhält als Kind-Datensatz die REST-Page vom Typ Liste
    • Die REST-Page vom Typ Liste erhält als Kind-Datensätze die REST-Page vom Typ Karte und die REST-Page vom Typ Kinder

Eine Beispielresponse könnte wie folgt aussehen:

Codeblock
{
            "shopArticleActive": true,
            "shopArticleName": "Visitenkarte allgemein",
            "shopArticleSku": "00001",
            "meta": {
                "id": 1,
                "userID": 2,
                "userTable": "Administrator",
                "createTime": 1531780172,
                "changeTime": 1670232447
            },
            "translations": {
                "en_GB": {
                    "shopArticleName": "Business Card",
                    "shopArticleSeoDescription": ""                },
                "fr_DE": {
                    "shopArticleDescription": null,
                    "shopArticleName": null                }
            },
            "links": [
                "\/rest\/v5\/parentsGroupArticle\/1",
                "\/rest\/v5\/shopArticleCard\/1",
                "\/rest\/v5\/childArticleVariant\/1"
            ]
        }