Works like a charm!  Thanks, Kristian and Christian!

Jonathan

On Thu, Nov 11, 2021 at 1:19 PM Christian Grün <christian.gr...@gmail.com>
wrote:

> Hi Jonathan,
>
> As Kristian indicated, it suffices to specify the media-type or method
> parameter. The content type will be generated by BaseX (see the
> attached example).
>
> If you want to return a non-standard or custom Content-Type header,
> you’ll indeed need to construct your own response, either manually or
> via the web:response-header helper function.
>
> Hope this helps,
> Christian
>
> declare
>   %rest:path('json')
>   %output:method('json')
> function page:test() {
>   map { 1: 2 }
> };
>
> > curl -i "http://localhost:8984/json";
> HTTP/1.1 200 OK
> Date: Thu, 11 Nov 2021 18:14:42 GMT
> Content-Type: application/json;charset=utf-8
> Server-Timing: parse;dur=0.05 ms,compile;dur=0.12 ms,evaluate;dur=0.0
> ms,serialize;dur=0.0 ms
> Content-Length: 14
> Server: Jetty(9.4.44.v20210927)
>
> {
>   "1": 2
> }
>
>
>
> On Thu, Nov 11, 2021 at 2:11 PM Jonathan Robie <jonathan.ro...@gmail.com>
> wrote:
> >
> > 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