1. XQRS Functions Module: xqrs-functions.xq

The optional library module xqrs-functions enables your Application to export all of the XQuery functions XQRS is managing along with their RESTXQ Annotations.

Another way of putting this is an Export of all of the RESTful End Points XQRS is managing. You may find this useful if you're trying to build a client which automatically knows what services are available and exactly how to call them. For example creating Unit Test Stubs for hundreds of endpoints in your favourite language and Unit test framework.

Import the module library into your main xqrs.xqy code and it's ready to go.

2. Register the RESTXQ module

import module namespace xqrs-functions =
  "http://xmllondon.com/xquery/xqrs-functions" at
  "optional-libraries/xqrs-functions.xq";

This provides you with 1 RESTful service

URI Description
/xqrs-functions List all the Functions/Paths managed and known by XQRS

3. Example XML Output

There is a helpful RelaxNG Schema which describes the XML structure of what will be output from this service.

The following snippet of XML code is a sample of what is produced from running the service

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://xmllondon.com/schema/xqrs-functions-1.0.rnc" 
  schematypens="http://xmllondon.com/xquery/xqrs-functions"?>
<functions base-url="http://prod.myserver.com:8092">

  <function namespace="http://factory/xq" local-name="put-wheel" arity="2">
    <path uri="/factory/wheel/{$wheel-id}">
      <segment>factory</segment>
      <segment>wheel</segment>
      <variable-segment type="xs:string" maps-to-variable="wheel-id"/>
    </path>
    <method name="PUT" maps-to-variable="request-body">
      <type>document-node()</type>
    </method>
    <consumes>text/xml</consumes>
  </function>
  
  <function namespace="http://factory/xq" local-name="get-wheel" arity="1">
    <path uri="/factory/wheel/{$wheel-id}">
      <segment>factory</segment>
      <segment>wheel</segment>
      <variable-segment type="xs:string" maps-to-variable="wheel-id"/>
    </path>
    <method name="GET"/>
    <produces>text/xml</produces>
    <return-type>document-node()</return-type>
  </function>

  <!-- ... and much more ... -->
  
</functions>
TOP