Forum: PC-Programmierung Auftrennung Front und Backend bei REST API


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Holger K. (holgerkraehe)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Folgendes Szenario:

Ich habe ein Backend welches mir folgende Supplier informationen 
liefert:
{"id":1,"name":"RS-Online","url":null,"stateId":1}

Nun möchte ich diese Daten im Fronend anzeigen lassen. Da macht sich 
jedoch eine stateId als Zahl nicht besonders gut. Daher möchte ich dort 
die ID durch einen Text ersetzen. Das Mapping von Text zu Id is 
ebenfalls über das Backend verfügbar.
{"id":1,"State":"Pending"}...

Nun stellt sich mir folgende Frage:

Ist es Aufgabe des backends, diese Verknüpfung durchzuführen und dem 
Frontend bereits ein Objekt in folgender Form zu liefern:
{"id":1,"name":"RS-Online","url":null,"State":"Pending"}

Oder sollte sich das Frontend diese Daten selbst zusammenbauen?

Falls es Aufgabe des Backends ist, dann gibt es noch folgendes Szenario:
Im Frontend wird nun ein neuer Supplier angelegt. In diesem Zuge kann 
nun auch der Status definiert werden. Dazu holt sich das Frontend alle 
möglichen Stati:
{"id":1,"State":"Pending"}...

Und zeigt den Text dazu an: Pending, Active etc...
z.B. in einem Dropdown.

Wenn nun der Benutzer den Datensatz an das Backend zur Eintragung 
sendet, was ist dann hier der "saubere" Weg?

Sendet das Frontend nun die ID des Status oder den Text?

Variante A:
{"name":"Neuer Supplier","url":null,"stateId":1}

Variante B:
{"name":"Neuer Supplier","url":null,"State":"Pending"}

Mir ist klar, dass alle Varianten technisch umsetzbar sind. Im Sinne von 
loser Kopplung und Clean-Code sowie Bestpractice hoffe ich jedoch auf 
ein paar Kommentare.

Vielen Dank für eure Antworten.

: Bearbeitet durch User
von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Holger K. schrieb:
> Sendet das Frontend nun die ID des Status oder den Text?
>
> Variante A:{"name":"Neuer Supplier","url":null,"stateId":1}
> Variante B:{"name":"Neuer Supplier","url":null,"State":"Pending"}

Beides:

:{"name":"Neuer Supplier","url":null,"stateId":1,"stateText":"Pending" }

Begründung: Die numerischen IDs sind leichter im Code zu nutzen, aber 
der (redundante) Text vereinfacht das Debugging. Bei JSON kann man 
überflüssige Felder normalerweise ganz einfach ignorieren.


Aus demselben Grunde übertragt man dann auch sowohl StateID als auch den 
sprechenden Text ans Frontend.  Wenn das Frondend die Vernküpfung machen 
muss wären das IMHO zwei Reoundtrips statt einem.

von Holger K. (holgerkraehe)


Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort.

Hier wären dann aber die Daten redundant.
Entspricht die Cleancode?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.