Hi Marco,
I can confirm that your RESTXQ paths were supposed to work as you expected them to work: If more than one endpoint is found in the first round, the one with a larger number of path segments should have been selected as favorite. In our implementation, the one with less segments was chosen, which is why your page:others function was evaluated in all cases.
I have corrected this behavior; the latest snapshot should work as expected. In addition, I have slightly revised our documentation.
Cheers Christian
[1] https://github.com/BaseXdb/basex/commit/f421f06046fc4dddc25c6d82c3ee5a522b32... [2] http://files.basex.org/releases/latest/
On Fri, Feb 22, 2019 at 12:05 PM Marco Lettere m.lettere@gmail.com wrote:
Hello all,
according to the docs this should be possible:
(: Matches all paths with "app" as first, a number as second, and "order" as third segment :) declare %rest:path("app/{$code=[0-9]+}/order") function page:order($full-path) { ... };
(: Matches all other all paths starting with "app/" :) declare %rest:path("app/{$path=.+}") function page:others($path) { ... };
And it actually is... We are currently in the very unfortunate situation where we need the following:
(: Matches anything followed by /input :) declare %rest:path("app/{$path=.+}/input") function page:inputs($path) { ... };
(: Matches all other all paths starting with "app/" :) declare %rest:path("app/{$path=.+}") function page:others($path) { ... };
Unfortunately this makes all the calls to be redirected to the page:others function ... is there a motivation behind it or could it be possible to work around that?
Thanks,
Marco.