I set up this restxq [1]. And call it with something like [2]. Got an output of [3] which looks like what I expect. M.
[1] module namespace t = "urn:test";
declare %rest:path("test") %rest:POST %rest:consumes("application/x-www-form-urlencoded") %output:method("html") function t:test() { <html> <body> <p>{request:parameter-names() ! (. || "=" || request:parameter(.))}</p> </body> </html> };
[2] curl --location --request POST 'http://localhost:8984/test' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'param1=Hello' \ --data-urlencode 'param2=World'
[3] <html> <body> <p>param1=Hello param2=World</p> </body> </html>
On 22/04/20 16:03, Zimmel, Daniel wrote:
the mime type seems correct, all params are being sent. I do not have problems getting the body, only request:parameter-names() does not give any values. (request:header works, for example)
-----Ursprüngliche Nachricht----- Von: Marco Lettere m.lettere@gmail.com Gesendet: Mittwoch, 22. April 2020 15:31 An: Zimmel, Daniel D.Zimmel@ESVmedien.de; basex-talk@mailman.uni-konstanz.de Betreff: Re: AW: [basex-talk] A question about RESTXQ rest:form-param()
Are you setting the mime type to "application/x-www-form-urlencoded"? This is the prerequisite in order to get the body of a post parsed to form parameters. M.
On 22/04/20 15:22, Zimmel, Daniel wrote:
Thanks for the hint Marco,
I just tried request:parameter-names(): that one works with GET but with POST I get an empty-sequence, I am not sure what the problem is here. I can access the full (unparsed) body, though (I can use that).
Daniel
-----Ursprüngliche Nachricht----- Von: Marco Lettere m.lettere@gmail.com Gesendet: Mittwoch, 22. April 2020 14:24 An: basex-talk@mailman.uni-konstanz.de Betreff: Re: [basex-talk] A question about RESTXQ rest:form-param()
Hi Daniel, another way is to use request:* functions [1] available for programmatic inspection of the request. Cheers, M.
[1] https://docs.basex.org/wiki/Request_Module
On 22/04/20 12:18, Zimmel, Daniel wrote:
Hi Daniel,
RTFM. Simply pass the body in %rest:POST("{$body}").
Sorry for disturbing!
Daniel
-----Ursprüngliche Nachricht----- Von: Zimmel, Daniel D.Zimmel@ESVmedien.de Gesendet: Mittwoch, 22. April 2020 11:27 An: BaseX basex-talk@mailman.uni-konstanz.de Betreff: [basex-talk] A question about RESTXQ rest:form-param()
Hi,
in an HTML form with a RESTXQ POST action, do I really have to declare %rest:form-param() for every param, or is there a way to pass the full query component in one parameter?
Best, Daniel