Versionen im Vergleich

Schlüssel

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

Nuclos REST Architektur: camelCase, FQN, UID, attributes, links, rel, methods, subforms, JSON-Konventionen.

globe with meridians Sprache: Deutsch · English

light bulb Architektur Entscheidungen (INTERN)

Interne Design-Entscheidungen zur REST-JSON-Struktur – camelCase, FQNs, attributes-Key und Link-Rendering.

Status
colourGreen
titleKonzept
Status
colourBlue
titleEntwickler
Status
colourGreen
titleStand: Jul 2026
Status
colourGrey
titlegilt fuer Nuclos 4.2026.x

Panel
bgColor#F4F5F7

Auf dieser Seite

Inhalt
maxLevel2
minLevel2
Hinweis
titleHintergrund

Interne Design-Entscheidungen (Entwurf 2015) zur Gestaltung der REST-JSON-Struktur. Für die Nutzung des Service ist die REST-Dokumentation maßgeblich.

Konventionen

  • JSON-Properties in camelCase (z.​B. boMetaId statt bo_meta_id), keine Unterstriche in Keys.
  • FQNs statt UIDs: statt der UID der BO-Meta der Package- und BO-Name (de_test_Auftrag).
  • Attribute klein beginnend (de_test_Auftrag_gesamtsumme) und – wo möglich – nicht voll-qualifiziert (Ausnahmen: VLP, Layout-ML-Regeln).
  • Trennung technischer und fachlicher Attribute: fachlicher Inhalt unter dem Key attributes.
  • Alle Links mit rel-Key, href und methods-Array; Unterformulare unter subforms.
Info
titleBegründung

Nicht voll-qualifizierte Attribute wurden bevorzugt, weil sie weniger Traffic erzeugen, übersichtlicher sind und Testfälle vereinfachen.

Verwandte Seiten

gear RESTful Service


REST-Service.

Öffnen →

Inhalt
indent0px

Architektur Entscheidungen

Entwurf vom 20.01.2015

  1. Keine _ in keys.
  2. JSON Properties werden Camelcase geschrieben, also boMetaId statt bo_meta_id (sh.:http://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml#Property_Name_Format)
  3. UIDs werden durch FQNs ersetzt:
    1. Statt der UID des BO-Meta wird der Package Name und der Name des BOs genutzt: de_test_Auftrag
    2. Attribute werden (wenn möglich) nicht voll-qualifiziert (Ausnahme: im den VLP, Layout ML-Regeln) - Siehe Diskussion
    3. Attribute werden klein am Anfang geschrieben: de_test_Auftrag_gesamtsumme
  4. Trennung von technischen und fachlichen Attributen: 
    1. Bei BOs wird der fachliche Inhalt unter dem Key "attributes" aufgelistet (früher "bo_values")
  5. Alle Links werden folgendermaßen gerendert:

    Codeblock
    languagejs
    "links": {
    	"self": {  // key ist das "rel"
        	"href": "http://.../bo_metas/de_test_Auftrag/123",	 // FQN bei BO 
           	"methods": [ "GET", "POST"],	// Array
        },
        "bo_meta": {
        	"href": "/bo_metas/de_test_Auftragsposition/",
            "methods": [ "GET"]
       }
    }
  6. URLs:
    1. FQN statt UID
  7. Dependencies:
    1. URL: FQNs statt UIDs, subforms
    2. Inhalt:

      Codeblock
      "subforms" : {
      	"de_test_Auftragsposition_auftrag" : {" : {
      		"links": {
                 	"self": {
                 		"href": "/bo_metas/de_test_Auftrag/123/subforms/de_test_Auftragsposition_auftrag/",
                     	"methods": [ "GET", "POST"]
                 	},
                 	"bo_meta": {
                 		"href": "/bo_metas/de_test_Auftragsposition/",
                     	"methods": [ "GET"]
                 	}
             	}
          },
          "de_test_Reklamation_Folgeauftrag" : {
      		"self": {
             		"href": "/bo_metas/de_test_Auftrag/123/subforms/de_test_Reklamation_folgeauftrag/",
                 	"methods": [ "GET", "POST"]
            	},
             	"bo_meta": {
             		"href": "/bo_metas/de_test_Reklamation",
                 	"methods": [ "GET"]
             	}
      	},
      	"de_test_Reklamation_Auftrag" : {
      		"self": {
             		"href": "/bo_metas/de_test_Auftrag/123/subforms/de_test_Reklamation_auftrag/",
                 	"methods": [ "GET", "POST"]
            	},
             	"bo_meta": {
             		"href": "/bo_metas/de_test_Reklamation",
                 	"methods": [ "GET"]
             	}
      	},
      }
      
      
  8. Umbenennungen
    1. cstr (in ContainerRVO.java) -> constraints

Diskussion:

...

  1. das mehr Traffic erzeugt
  2. das unübersichtlich aussieht
  3. Test-Fälle aufwendiger zu erstellen sind.

...

  1. Was ist der key? Der Name des Attributes?

...

  1. Beachten: Statuswechsel vs. Daten eingeben inkl. Statuswechsel
  2. URL zum Statuswechsel (ohne Datenänderung), Speichern inkl. Statuswechsel Attribut.
  3. Offen

...