Felsökning och testningsexempel för webb- API
Felsökning och testningsexempel för webb- API
Felsökning
Skogsavverkning
Loggar kan hittas i ESM UI under Administration Underhåll Loggar. Härifrån är det möjligt att ladda ner loggar, visa loggar i webbläsaren och kontrollera hur många öppna sessioner som finns för att visa olika loggar. Det finns tre loggar som är bra för att felsöka webb- API fel, dessa är:
- För dataCardImport com.bitmount.equipment.importing.ValidatingEntityXMLImporter
- För sökning com.efecte.webservice.SearchController
- För EQL frågor com.efecte.persistence.search.eql.EqlEngine
Från loggar kan du visa behörighetsfel och mer exakta fel för EQL undantag.
Webb- API returnerar inga datakort
Webb- API returnerar inga datakort, trots att det finns datakort som har skapats för mallen jag frågar efter.
Detta kan vara ett behörighetsproblem. Om webb-API-användaren inte har mallbehörigheter för en given mall kan search.ws inte returnera datakort.
Söka med icke-befintlig attributkod
Om search.ws används med en icke-existerande attributkod, t.ex. $nam$ istället för $name$, kan webb- API :et i detta fall ge följande svar:
<?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>Det betyder att attributeCode $nam$ inte finns i mallen.
Söka datakort med stavfel i WHERE-satsen
Search.ws returnerar inga datakort eller fel om det finns ett stavfel i WHERE-klausulens attributeCode. Till exempel bör din fråga vara "WHERE $ efecte_id $ = 'INC-000259'" men det finns ett felstavat attribut i frågan "select entity from entity where template.code='incident' AND $ efectei $='INC-000259'".
Detta ger ett tomt svar utan fel, eftersom ingenting matchar WHERE-villkoret.
DataCardImport-fel
<?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>Detta kan också orsakas av bristande behörighet till mallen. Kontrollera från Administration -> behörigheter att webb-API:ets roll har behörighet att skapa datakort till mallen.
Testningsexempel
Testning av webb API förfrågningar kan enkelt göras med webbläsare eller curl. I webbläsare är det enkelt att testa search.ws-förfrågningar, särskilt när webbläsaren kan hantera xml.
Testning med webbläsare
För att testa search.ws i webbläsaren, lägg till /search.ws efter ESM-instansens bas-URL. Nedan visas en bild på ett exempel på webbläsartestning med följande URL:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,subject,description,status&query=select%20entity%20from%20entity%20where%20template.code=%27incident%27

Testning med curl
Ett alternativ för att testa webb- API är curl. Nedan är ett exempel på ett curl-kommando som gör samma fråga som webbläsarexemplet.
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%27Exempelsvar nedan:
<?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>Import av datakort fungerar på liknande sätt, i det här exemplet finns incident-xml i importdata.xml-filen:
curl -X POST -H "Content-Type: application/xml" -d @importdata.xml -u "webapi:Apitest" -L https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_managementSvaret bör vara något liknande exemplet nedan:
<?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>