Fehler in JSON RPC Schnittstelle - idoit v1.02
-
ab version 2.0 des JSON RPC Protokolls wird bei der Antwort entweder ein "result" oder "error" objekt zurückgeliefert. manche JSON RPC clients berücksichtigen das und geben einen Fehler aus, wenn beide objekte in der Antwort sind.
-
noch ein kleiner fehler. der content-type in der antwort sollte "application/json" statt "html/text" sein.
-
wenn ich ein neues object erstelle bekomme ich immer einen php fehler mit in der antwort, womit der JSON parser nicht klar kommt.
request:
{"id":26,"method":"cmdb.object.create","params":{"title":"Zentrales Softwareportal","type":"C__OBJTYPE__IT_SERVICE","apikey":"123456789"},"jsonrpc":"2.0"}
response:
Warning: constant(): Couldn't find constant in /srv/www/htdocs/idoit/src/classes/api/model/cmdb/isys_api_model_cmdb_object.class.php on line 147 {"result":{"id":1928,"message":"Object was successfully created","success":true},"error":null,"id":26}
kann man natürlich umgehen wenn mann in der php.ini zum beispiel "display_errors = On" auf "display_errors = Off" ändert. Trotzdem sollten in einem JSON Objekt keine PHP Fehlermeldungen zu sehen sein.
-
wenn ich ein update auf die kategorie 'C__CATG__GLOBAL' ausführe und keinen titel übergebe, wird der titel gelöscht. laut handbuch sind alle parameter optional.
request:
{"id":103,"method":"cmdb.category.update","params":{"catgID":"C__CATG__GLOBAL","data":{"cmdb_status":6},"objID":1951,"apikey":"123456789"},"jsonrpc":"2.0"}
response:
{"result":{"success":true,"message":"Category successfully saved"},"error":null,"id":103}
es wäre noch wünschenswert, wenn die kategoriekonstanten im handbuch zu finden wären. Eine eigene wiki Seite für die JSON-RPC Schnittstelle wäre zum Entwickeln etwas besser. Ich verliere im PDF Dokument oft die Übersicht.
-
Hallo Alex,
vielen Dank für die Zahlreichen Meldungen - Ich werde diese an die Entwickler übergeben!
Viele Grüße
Leo -
Hallo Alex,
vielen Dank für die Zahlreichen Meldungen - Ich werde diese an die Entwickler übergeben!
Viele Grüße
LeoDas freut mich. Noch zur Info: Ich verwende den JSON-RPC Client von dieser Webseite:
-
Wenn ich einen nicht vorhandenen eintrag aus einer multivalue-kategorie löschen möchte erhalte ich als rückmeldung, dass der eintrag erfolgreich gelöscht wurde.
request:
{"id":8,"method":"cmdb.category.delete","params":{"catgID":"C__CATG__ACCESS","cateID":29,"objID":1735,"apikey":"123456789"},"jsonrpc":"2.0"}
response:
{"message":"Category entry '29' successfully deleted","success":true}
-
Wenn ich einen nicht vorhandenen eintrag aus einer multivalue-kategorie löschen möchte erhalte ich als rückmeldung, dass der eintrag erfolgreich gelöscht wurde.
request:
{"id":8,"method":"cmdb.category.delete","params":{"catgID":"C__CATG__ACCESS","cateID":29,"objID":1735,"apikey":"123456789"},"jsonrpc":"2.0"}
response:
{"message":"Category entry '29' successfully deleted","success":true}
Hallo Alex,
Es wird bei dieser Abfrage geprüft ob Kategorie-Eintrag den Status Normal oder Gelöscht hat und je nachdem welchen Status der Eintrag hat anders behandelt:1er Aufruf:
Status wird auf gelöscht gesetzt2th Aufruf:
Eintrag wird vollständig gelöscht(purge)Also ist das Handling wie folgt:
Eintrag[Normal] –---delete---> Eintrag[gelöscht] –---delete---> PURGE[Tatsächliches löschen aus der DB]
Aus diesem Grund erhalten Sie mindestens 2 mal eine erfolgreiche Nachricht, dass der Eintrag gelöscht wurde.
Mit freundlichen Grüßen
Steven
-
Mir ist noch folgendes aufgefallen. Beim Update eines Objekts durch die Methoden "cmdb.category.update" und "cmdb.object.update" bleibt das Änderungsdatum unverändert.