I want the query on the server side to specify the Content-Type header for
the response.  I didn't see how to do that from the link you provided.

This seems to work - is there a better way?


declare function as:json-response-headers()

{

  <rest:response>

    <http:response status="404">

      <http:header name="Content-Language" value="el"/>

      <http:header name="Content-Type" value="application/json;
charset=utf-8"/>

    </http:response>

  </rest:response>

};


declare

  %rest:path("/api/abbott-smith/index")

  %rest:GET

  %rest:produces("application/json")

  function as:index()

{

  as:json-response-headers(),


  array { $as:abbott-smith/*:entry ! @lemma ! string() }

  ! serialize(., map {'method' : 'json'})

};


Jonathan

[1] https://docs.basex.org/wiki/RESTXQ#Custom_Response

On Wed, Nov 10, 2021 at 11:29 PM Kristian Kankainen <krist...@keeleleek.ee>
wrote:

> Hi Jonathan,
>
> Have you tried setting the media-type or method parameters to
> application/json instead of only the produces parameter, as explained here
> [1].
>
>
> [1] https://docs.basex.org/wiki/REST#Content_Type
>
> Best regards,
> Kristian Kankainen
>
>
>
> On 11. Nov 2021, at 02:32, Jonathan Robie <jonathan.ro...@gmail.com>
> wrote:
>
> Using RESTXQ in an application for the first time.  I expected this
> function to have the MIME type application/json:
>
> declare
>   %rest:path("/api/abbott-smith/index")
>   %rest:GET
>   %rest:produces("application/json")
>   function as:index()
> {
>   array { $as:abbott-smith/*:entry ! @lemma ! string() }
>   ! serialize(., map {'method' : 'json'})
> };
>
> But both POSTMAN and WADL give me application/xml as the mime type:
>
> <wadl:resource path="/api/abbott-smith/index">
>   <wadl:method name="GET">
>     <wadl:request/>
>     <wadl:response>
>     <wadl:representation mediaType="application/xml"/>
>     </wadl:response>
>   </wadl:method>
> </wadl:resource>
>
>
> What am I doing wrong?
>
> Jonathan
>
>
>

Reply via email to