Versionen im Vergleich

Schlüssel

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

Anzeige untergeordneter Seiten


Er

Einführung:

Ab Nuclos 4.0 hat der Nuclos Server einen RESTful Service integriert, der automatisch gestartet wird. Er dient primär als Interface für einen Webclient, kann aber auch grundsätzlich als Dienst verwendet werden.

...

ist unter dem Pfad

...

Codeblock
/rest

...

zu erreichen, z.B. für eine lokale Installation des Servers auf dem Port 8080:

http://localhost:8080/nuclos-war/rest/<pfad>.  (z.B. für logout: http://localhost:8080/nuclos-war/rest/logout)

Session:

Jeder Teilservice bis auf wenige Ausnahmen (z.B. Login) benötigt eine Session ID. Wird keine Session ID übergeben, bzw. ist die Session ID ungültig, gibt der Service einen Fehler mit dem HTTP Status 401 (Unauthorized) zurück. Die Session ID kann entweder als Standard-Cookie oder als Http-Header-Parameter beim Aufruf des REST-Services übergeben werden. Der Key muss "sessionid" lauten.

...

http://localhost:8080/nuclos-war/rest

...

/

...

.

...

.

...

JSON-Spezifikationen:

  • Login ("username": String, "password": String, "locale": String (optional))
    Beispiel für ein gültiges Login-JSONObject:

    Codeblock
    var login = {
    	"username": "user123", 
    	"password": "passXYZ", 
    	"locale": "de_DE"};

    -

...

Filter ("search": String, "offset": Number, "chunksize": Number, "sort": String, (alle optional))
Beispiel für ein gültiges Filter-JSONObject:

Codeblock
var filter = {
	"search": "Hu", 
	"offset": 0, 
	"chunksize": 100, 
	"sort": "desc:szU1s75TFT6kGF7l0Whj"};

-

...

ValueObject ("_uid": String, "_pk": Number/String, "_flag": "insert/update/delete", "<FieldUID>": Object, beliebige Anzahl, "_states": Array aus States, optional)
Beispiel für ein gültiges ValueObject-JSONObject:

Codeblock
var vo = {
	"_uid":"KIb7Pmxm3AnJtdBWXWsJ",
 	"_pk":40000191,
 	"nyVRqlqCUYvH3GNwlKrn":400,
 	"zTc3H0vtH5o2JV82gRtg":"Schraube",
	"_flag":"update",
    "_newstate": 40000344}

-

ValueObjectWithSubData ("_uid": String, "_pk": Number/String, "<FieldUID>": Object, beliebige Anzahl, "_subvos": Array aus ValueObjects)

Beispiel für ein gültiges ValueObjectWithSubData-JSONObject:

Codeblock
var vo = {
	"_uid":"A375TFTm3AnJtdBWJtdB",
 	"_pk":40002037,
 	"szU1s75TFT6kGF7l0Whj":400,
	"_flag":"insert",
    "_subvos":[{"_uid":"KIb7Pmxm3AnJtdBWXWsJ","zTc3H0vtH5o2JV82gRtg":"Schraube","_pk":40000191,"_flag":"update"},
              {"_uid":"KIb7Pmxm3AnJtdBWXWsJ","zTc3H0vtH5o2JV82gRtg":"Stuhl","_pk":40000192,"flag":"delete"}]}

 

 

...

EntityMeta ("uid": String, "statemodel": Boolean, "name": String, "statemodel": Boolean, "readonly": Boolean, "nodelete": Boolean,  "fields": Array aus Fields, "hasImage": Boolean, "searchfilter": String (Nur für Service Searchfilter) )
Beispiel für ein EntityMeta-JSONObject:

Codeblock
{"uid":"KIb7Pmxm3AnJtdBWXWsJ",
 "name":"Artikel",
 "statemodel":false,
 "readonly":false,
 "nodelete":false,
 "fields":[{"uid":"cjJ9ga7T6rEnl9FNMNrMdy2","name":"Name","type":"String",
           "readonly":false,"unique":true,"nullable":false,"reference":false,"order":0},
          {"uid":"wwS2lLCi6Rs57E","name":"Bestand","type":"Number",
           "readonly":false,"unique":false,"nullable":true,"reference":false,"order":1}]
 "hasImage":true,
 "searchfilter":"9XRAkACDWgJulpAiYCHs"}

-

...

Field ("uid": String, "name": String, "type": String, "readonly": Boolean, "unique": Boolean, "nullable": Boolean, "reference": Boolean, "order": Number)
Beispiel für ein Field-JSONObject:

Codeblock
{"uid":"KIb7Pmxm3AnJtdBWXWsJ",
 "name":"Bestand",
 "type":"Number",
 "readonly":false,
 "unique":false,
 "nullable":true,
 "reference":false,
 "order",3}

-

  • Result ("total": Number, "title": String, "vos": Array aus ValueObjects)

    "total" ist die Anzahl alle Datensätze, die die Suche ohne Einschränkung der Blockgröße gefunden hat. Beispiel für ein Result-JSONObject:

    Codeblock
    {"total":4,"title":"Artikel","vos":[
    {"uid":"KIb7Pmxm3AnJtdBWXWsJ","nyVRqlqCUYvH3GNwlKrn":400,"zTc3H0vtH5o2JV82gRtg":"Schraube","pk":40000191},  {"uid":"KIb7Pmxm3AnJtdBWXWsJ","nyVRqlqCUYvH3GNwlKrn":41,"zTc3H0vtH5o2JV82gRtg":"Stuhl","pk":40000192}]}

    -

  • SearchResult ("uid": String, "name": String, "pk": Number/String, "text": String)
    Beispiel für ein SearchResult-JSONObject:

    Codeblock
    {"uid":"KIb7Pmxm3AnJtdBWXWsJ",
     "name":"Artikel"
     "pk":40000217
     "text":"anzahl=4, lieferung=2013-06-28, lieferbar=null, name=Schrank, preis=256.17"}

    -

  • ReferenceValue ("pk": Number/String, "name": String)
    Beispiel für ein ReferenceValue-JSONObject:

    Codeblock
    {"pk":40006894,
     "name":"Herr Rossi"}

    -

  • SubEntity ("name": String, "Entity": String, "field": String)
    Beispiel für ein SubEntity-JSONObject:

    Codeblock
    {"name":"Artikel,
     "Entity":"KIb7Pmxm3AnJtdBWXWsJ",
     "field":"szU1s75TFT6kGF7l0Whj"}

    -

  • State ("pk": Number/String, "name": String, "numeral": Number, "current": Boolean, "icon": Base64-Image, optional)
    Beispiel für ein State-JSONObject:

    Codeblock
    {"pk":40000717,
     "name":"Zugewiesen",
     "numeral":10,
     "current":true}

    -

  • Menu ("path": String, "entries": Array("uid": String, "name": String, "icon": Base64-Image, optional))
    Beispiel für ein Menu-JSONObject:

    Codeblock
    {"path":"Freetime",
     "entries":[{"uid":"oJeMHK7Y9A-1L7fOVrocA","name":"Ladder"},
                {"uid":"k4lF4lDOcA-nl36NMw","name":"TreeHouse","icon":"iVBORw0KGgoAAAANSUhEUgA"},
                {"uid":"Uzmz50InTg-yJ21HtZIA","name":"New Entity","icon":"iVBORw0KGgoAAAANSUhEUgA"}]}

Datentypen:

Um die 4 JSON-Datentypen (String, Number, Boolean, Null) weiter zu definieren, kann der Datentyp explizit in von den MetaDaten ermittelt werden, z.B. durch den Service "Field". Folgende Datentypen werden u.a. geliefert.

...

HTTP-Statuscodes:

...

.

...