xquery insert via REST API
Monday, 26 August 2024 · 2 messages · last reply 28 Aug 2024
LA
Liedtke, Alexander26 Aug 2024 18:00 #
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
LA
Liedtke, Alexander28 Aug 2024 15:42 #
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
Quoted text · BaseX-Talk · 18 lines
Von: BaseX-Talk <basex-talk-bounces at mailman.uni-konstanz.de> im Auftrag von Liedtke, Alexander <A.Liedtke at smb.spk-berlin.de> Gesendet: Montag, 26. August 2024 18:00:40 An: basex-talk at 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
Written for BaseX 11.2. BaseX may have changed since: please check the current documentation.
⚡Generated with XQuery