Hallo,

zur Info - durch wrappen der query in CDATA string, funktioniert alles wie 
gewünscht und das Problem ist gelöst.

Ist wahrscheinlich grundsätzlich empfehlenswert CDATA für queries via REST API 
zu nutzen....


Bsp. ;

xq = '<query><text><![CDATA[ insert node <test>foo</test> ]]>into 
//data/object[1]</text></query>'


Mit besten Grüssen

Alexander Liedtke

________________________________
Von: BaseX-Talk <basex-talk-boun...@mailman.uni-konstanz.de> im Auftrag von 
Liedtke, Alexander <a.lied...@smb.spk-berlin.de>
Gesendet: Montag, 26. August 2024 18:00:40
An: basex-talk@mailman.uni-konstanz.de
Betreff: [basex-talk] xquery insert via REST API

Hallo in die Runde,


vielleicht kann mir hierzu jmd einen Tipp geben.

Ich nutze die Rest API um via post xqueries (mit python requests) zu machen - 
das klappt mit z.B. replace auch problemlos.


Gerne würde ich jedoch auch insert nutzen - allerdings bekomme ich hier 
grundsätzlich eine 500 response.

Die query mache ich gemäß der Doku nach dem Beispielschema: insert nodes 
(<phone/>, <mail/>) into //name


In den Logs von dba sehe ich hierzu nichts. Ich bekomme auch sonst keine Info 
auf der shell in Form einer Fehlermeldung.


Der Test Request sieht wie folgt aus:


xq = '<query><text> insert node <test/> into //object[@id="574"]</text></query>'
url = 'http://localhost:8080/rest/ids/ObjectIDs.xml'
header = {'Media-Type': 'application/xml', 'charset':'utf-8'}
res = requests.post(url, headers=header, data=xq, auth=_auth.getBaseXAuth())


Hat hierzu vielleicht jemand Anmerkungen / Ideen?


Vielen Dank im Voraus

Alexander Liedtke




Reply via email to