Fehler in JSON RPC Schnittstelle - idoit v1.03
-
Die JSON RPC Antwort gibt immer noch ein "result" und "error" Objekt zurück.
Dieser Fehler wurde in v1.03 nun teilweise behoben:
[API] Response should not contain "error"-key on success
Umgekehrt darf aber auch kein "result" key vorhanden sein, wenn der "error" key ausgefüllt ist.
Ausserdem fehlt noch der Versions key "jsonrpc" in der Antwort.
-
Wenn ein Update auf ein nicht vorhandenes Objekt durchgeführt wird, gibt es immer eine Erfolgsmeldung in der Antwort.
request:
{"id":2,"method":"cmdb.object.update","params":{"id":1929,"title":"Title","apikey":"xxx"},"jsonrpc":"2.0"}
response
{"message":"Object title was successfully updated","success":true}
Hi Alex,
um SQL-Queries zu sparen verzichtet die API auf einen Check bezüglich der Existenz eines Objektes mit der angegeben ID. Dies wird an einigen anderen Stellen ähnlich gehandhabt. Es wird blind ein UPDATE-Statement abgeschickt. Das Response bezieht sich dabei also eher auf die erfolgreiche Ausführung der Query. Eventuell könnte per "affected_rows" die Response-Meldung gesetzt werden.
Stört es dich denn sehr?
VG
Selcuk
-
Die JSON RPC Antwort gibt immer noch ein "result" und "error" Objekt zurück.
Dieser Fehler wurde in v1.03 nun teilweise behoben:
[API] Response should not contain "error"-key on success
Umgekehrt darf aber auch kein "result" key vorhanden sein, wenn der "error" key ausgefüllt ist.
Ausserdem fehlt noch der Versions key "jsonrpc" in der Antwort.
Hi Alex,
natürlich hast du Recht. Wir werden das im nächsten Minor liefern :).
Vielen Dank für deine ausführlichen BugReports!
Selcuk
-
@skekec:
Wenn ein Update auf ein nicht vorhandenes Objekt durchgeführt wird, gibt es immer eine Erfolgsmeldung in der Antwort.
request:
{"id":2,"method":"cmdb.object.update","params":{"id":1929,"title":"Title","apikey":"xxx"},"jsonrpc":"2.0"}
response
{"message":"Object title was successfully updated","success":true}
Hi Alex,
um SQL-Queries zu sparen verzichtet die API auf einen Check bezüglich der Existenz eines Objektes mit der angegeben ID. Dies wird an einigen anderen Stellen ähnlich gehandhabt. Es wird blind ein UPDATE-Statement abgeschickt. Das Response bezieht sich dabei also eher auf die erfolgreiche Ausführung der Query. Eventuell könnte per "affected_rows" die Response-Meldung gesetzt werden.
Stört es dich denn sehr?
VG
Selcuk
Das müsste dann wenigstens in der Dokumentation stehen wie sich die aufgerufenen Methoden verhalten. Aus meiner Sicht würde es aber mehr Sinn machen einen Fehler, also "success : false" als Ergebnis zurückzuliefern wenn keine Objekte geupdated wurden.
wenn affected_rows > 0 dann "success:true" sonst "success:false". Das würde reichen.
-
In der Beschreibung für die Methode cmdb.impact.read steht, dass alle Beziehungen eines Objekts ausgelesen werden können. Wenn ich jedoch den Parameter relation_type weglasse, also mich nicht auf eine bestimmte Beziehungsart beschränken möchte, dann funktioniert diese Abfrage nicht.
-
Ich möchte über die Methode cmdb.category.update die spezifische Kategorie Raum updaten.
Laut JSON-RPC Handbuch kann ich auch den Raumtyp ändern.Leider kann ich über JSON-RPC die id für den Raumtyp weder auslesen, noch kann ich neue Raumtypen eintragen. Hier wäre es praktikabler, wenn man einen Text anstatt einer ID übergibt. Wird beim XML Import auch so gehandhabt. Falls notwendig wird dann ein neuer Eintrag für das Dialog-Plus Feld "Raumtyp" erstellt.
Ich muss als Notlösung zusätzlich über JDBC auf die Datenbank zugreifen und die entsprechende Tabelle auslesen bzw befüllen. Die JSON-RPC Schnittstelle sollte in dieser Hinsicht unabhängiger sein.
-
Hallo alex123,
vielen Dank für deine ausführlichen Bug-Reports. Wir werden versuchen diese Fehler schnellstmöglich zu beheben.
VG
-
Bei einem Update auf die Kategorie Port (C__CMDB__SUBCAT__NETWORK_PORT), wird das Feld für das Layer2 Netzwerk willkürlich beleget, falls das Feld für das Update nicht ausgefüllt war. Ausserdem wird ein Kabelobjekt angelegt.
-
Ich kann mit der Methode "cmdb.category.delete" keine normalen Kategorieren (zb Raum, Standort) löschen. Gibt im JSON-RPC Handbuch leider keine Beschreibung dazu. Wie lösche ich alle Einträge aus einer Kategorie?
Bei Multivalue Kategorien konnte ich mit cmdb.category.delete" einzelne Einträge löschen.
-
Hi Alex, die normalen Single Value Kategorien kann man leider nicht löschen. Man müsste den Inhalt mit der cmdb.category.update Methode leeren.