Hallo Christian,

As you know I’m really interested by this issue. 

On this topic, I was wondering if it could be possible to implement something 
to deal with path extensions in RESTXQ.
It would then be possible to perform later transparent content negotiation in 
the function.

For exemple :
```xquery

declare
  %restxq:path('/path/{$path}')
function works() {
  ' '
}

declare
  %restxq:path('/path/{$path}.json')
function works() {
  ' '
}

(: basex shouldn’t consider it like a duplicated path :)         

```
And a way to get the file extension in the path as a parameter. I’m not sure 
that it is already possible with regex in path.

```xquery
declare
  %restxq:path('/path/{$path}')
function works() {
  ' '
  (: something to get the file extension back in a variable to do reason :)
}        

```

Best regards,
Emmanuel


> Le 9 juil. 2017 à 11:10, Christian Grün <christian.gr...@gmail.com> a écrit :
> 
> Hi Omar,
> 
>> Thanks for the answer. There is one thing I want to point out: My problem is
>> not the quality measure. I have problems because my client lacks them.
> 
> Right, that’s what I understood. If quality factors are given, a
> function should be chosen, but in your case,
> BaseX doesn’t seem to be able to give preference to one of the two
> given content types.
> 
> For more details, I’ll definitely have to check how content type
> negotiation works in JAX-RS [1]. In nearly all cases, it was a good
> choice to adopt the rules that had been specified in this API. If it
> turns out that the given case is implementation-defined, it may be a
> good decision to prefer the first given content type.
> 
> Cheers,
> Christian
> 
> [1] https://jcp.org/en/jsr/detail?id=339
> 
> 
>> sends 'application/xml,*/*' which is interpreted as: any function that
>> either satisfies application/xml or any other mime type. Of course any othe
>> mime type alone weill select more than one function if there is more than
>> one function specified for a path only differentiated by mime/type in
>> %rest:produces. The BaseX answer to this is a BASX0003 error and therefore
>> no meaningful result.
>> 
>> Although it is correct to assume */* does not really select any funtion in
>> particular I find that bahavior not helpful. I should be able to specify
>> what should be executed on */*.
>> 
>> Furthermore when some mime type is specified alongside */* I think that */*
>> should be ignored and that mime type used instead.
>> 
>> Another solution would be to automatically assign a mime type more to the
>> left in the list a slightly higher quality measure so the problem of a equal
>> mime types can be solved. I even think there is some standard about
>> processing the Accept header in this manner but I may be wrong.
>> 
>> Best Regars
>> 
>> Omar
>> 
>> 
>> 
>> Am 04.07.2017 um 19:36 schrieb Christian Grün:
>>> 
>>> Hi Omar,
>>> 
>>> Thanks for the reminder. Yes, we still plan to improve support for
>>> quality factors in our RESTXQ implementation. We’ll probably need to
>>> find out how this has been resolved in JAX-RS, and define an
>>> equivalent solution for RESTXQ. I have updated the initial comment in
>>> Issue 1220 [1].
>>> 
>>> I am also passing this on to Adam Retter, the initiator of RESTXQ:
>>> Adam, did you think about adding support for quality factors in the
>>> RESTXQ implementation of eXist-db?
>>> 
>>> And, Omar, I assume you would like to have chosen the function that
>>> matches the first content types given in the Accept header?
>>> 
>>> Thanks everyone,
>>> Christian
>>> 
>>> [1] https://github.com/BaseXdb/basex/issues/1220
>>> 
>>> 
>>> 
>>> On Tue, Jul 4, 2017 at 1:17 PM, Omar Siam <omar.s...@oeaw.ac.at> wrote:
>>>> 
>>>> Hi list!
>>>> 
>>>> I like my oXygen editor to request raw XML data from my RESTxq endpoints
>>>> to
>>>> test XSL stylesheets. When I do this with RESTxq paths that have
>>>> different
>>>> %rest:produces it fails with the BASX0003 multiple functions error.
>>>> 
>>>> Turns out oXygen sends application/xml, */* as Accept header without any
>>>> quality.
>>>> 
>>>> I understand that as documented in
>>>> https://github.com/BaseXdb/basex/issues/1220 this is known not to work.
>>>> 
>>>> My/our workaround is to branch in a single XQuery function using sth.
>>>> like:
>>>> if (some $a in tokenize(request:header("ACCEPT"), ',') satisfies $a =
>>>> ('text/xml', 'application/xml')) then $xml else $xhtml
>>>> 
>>>> I hope this is still on the agenda for 8.7.
>>>> 
>>>> Best regards
>>>> 
>>>> Omar Siam
>>>> 
>>>> 
>> 

Reply via email to