Beispiele für die Fehlerbehebung und das Testen von Web API
Beispiele für die Fehlerbehebung und das Testen von Web API
Fehlerbehebung
Protokollierung
Protokolle finden Sie in der ESM-Benutzeroberfläche unter Verwaltung Wartung Protokolle. Von hier aus können Sie Protokolle herunterladen, im Browser anzeigen und überprüfen, wie viele Sitzungen zum Anzeigen verschiedener Protokolle geöffnet sind. Drei Protokolle eignen sich gut zum Debuggen von Web- API Fehlern:
- Für dataCardImport com.bitmount.equipment.importing.ValidatingEntityXMLImporter
- Für die Suche com.efecte.webservice.SearchController
- Für EQL Abfragencom.efecte.persistence.search.eql.EqlEngine
In den Protokollen können Sie Berechtigungsfehler und genauere Fehler für EQL Ausnahmen anzeigen.
Die Web- API gibt keine Datenkarten zurück
Die Web API gibt keine Datenkarten zurück, obwohl für die von mir abgefragte Vorlage Datenkarten erstellt wurden.
Dies kann ein Berechtigungsproblem sein. Wenn der Web-API-Benutzer keine Vorlagenberechtigungen für die angegebene Vorlage hat, kann search.ws keine Datenkarten zurückgeben.
Suchen mit nicht vorhandenem Attributcode
Wenn search.ws mit einem nicht vorhandenen Attributcode verwendet wird, z. B. $nam$ anstelle von $name$. In diesem Fall kann die Web- API folgende Antwort geben:
<?xml version="1.0" encoding="utf-8"?>
<error>
<code>efe-3001</code>
<description>Invalid search query</description>
<details>Macros should be preprocessed, not converted to HQL: $nam$</details>
</error>Dies bedeutet, dass der Attributcode $nam$ in der Vorlage nicht vorhanden ist.
Suche nach Datenkarten mit Tippfehler in der WHERE-Klausel
Search.ws gibt keine Datenkarten oder Fehler zurück, wenn der Attributcode der WHERE-Klausel einen Tippfehler enthält. Ihre Abfrage sollte beispielsweise lauten: „WHERE $ efecte_id $ = 'INC-000259'“, aber die Abfrage enthält ein falsch geschriebenes Attribut: „select entity from entity where template.code='incident' AND $ efectei $='INC-000259'“.
Dies führt zu einer leeren Antwort ohne Fehler, da nichts mit der WHERE-Bedingung übereinstimmt.
DataCardImport-Fehler
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>04.09.2018 09:43:38</start-time>
<total-time>0,294</total-time>
<entities-handled-per-second>3,401</entities-handled-per-second>
<average-entity-handling-time>0,294</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>0</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>0</entities-created>
<template-errors>
<template-error code="workstation">Ignoring entity</template-error>
</template-errors>
</entity-import-report>Dies kann auch durch fehlende Berechtigungen für die Vorlage verursacht werden. Überprüfen Sie unter „Verwaltung“ -> „Berechtigungen“, ob die Rolle der Web-API zum Erstellen von Datenkarten für die Vorlage berechtigt ist.
Testbeispiele
Das Testen von Web API -Anfragen kann problemlos mit dem Browser oder curl durchgeführt werden. Im Browser ist es einfach, search.ws-Anfragen zu testen, insbesondere wenn der Browser XML verarbeiten kann.
Testen mit dem Browser
Um search.ws im Browser zu testen, fügen Sie /search.ws nach der Basis-URL der ESM-Instanz hinzu. Unten sehen Sie ein Beispielbild eines Browsertests mit der folgenden URL:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,subject,description,status&query=select%20entity%20from%20entity%20where%20template.code=%27incident%27

Testen mit Curl
Eine Möglichkeit zum Testen von Web API ist curl. Unten sehen Sie ein Beispiel für einen curl-Befehl, der dieselbe Abfrage wie das Browserbeispiel ausführt.
curl -X GET -u "webapi:Apitest" -L https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,subject,destus&query=select%20entity%20from%20entity%20where%20template.code=%27incident%27Beispielantwort unten:
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity id="19406" name="Test incident2">
<template id="2597" name="Incident" code="incident"/>
<group code="incident_management"/>
<attribute id="2612" name="Incident ID" code="efecte_id">
<value>INC-000278</value>
</attribute>
<attribute id="2623" name="Status" code="status">
<value>1 - Untouched</value>
</attribute>
<attribute id="2632" name="Subject" code="subject">
<value>Test incident2</value>
</attribute>
</entity>
</entityset>Das Importieren von Datenkarten funktioniert auf ähnliche Weise. In diesem Beispiel befindet sich die XML-Datei des Vorfalls in der Datei importdata.xml:
curl -X POST -H "Content-Type: application/xml" -d @importdata.xml -u "webapi:Apitest" -L https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_managementDie Antwort sollte etwa wie im folgenden Beispiel aussehen:
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>14.09.2018 10:44:48</start-time>
<total-time>0,378</total-time>
<entities-handled-per-second>2,646</entities-handled-per-second>
<average-entity-handling-time>0,378</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>1</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>1</entities-created>
</entity-import-report>