Web Module
Jump to navigation
Jump to search
This XQuery Module provides convenience functions for building web applications with RESTXQ.
Contents
Conventions
All functions and errors in this module are assigned to the http://basex.org/modules/web
namespace, which is statically bound to the web
prefix.
Functions
web:content-type
Signatures | web:content-type($path as xs:string) as xs:string |
Summary | Returns the content type of a path by analyzing its file suffix. application/octet-stream is returned if the file suffix is unknown.
|
Examples |
|
web:create-url
Signatures | web:create-url($url as xs:string, $parameters as map(item(), item()*)) as xs:string |
Summary | Creates a new URL from the specified $url string and the $parameters specified in a map. The keys and and values of the map entries will be converted to strings, URL-encoded (see web:encode-url), and appended to the url as query parameters. If a map entry has more than a single item, all of them will be appended as single parameters.
|
Examples |
|
web:encode-url
Signatures | web:encode-url($string as xs:string) as xs:string |
Summary | Encodes a string to a URL. Spaces are rewritten to + ; * , - , . and _ are adopted; and all other non-ASCII characters and special characters are percent-encoded.
|
Examples |
|
web:decode-url
Signatures | web:decode-url($string as xs:string) as xs:string |
Summary | Decodes a URL to the original string. Percent-encoded characters are decoded to their UTF8 codepoints, and + characters are rewritten to spaces.
|
Examples |
|
Errors | invalid : the string contains invalid XML characters.
|
web:redirect
Signatures | web:redirect($location as xs:string) as element(rest:response) web:redirect($location as xs:string, $parameters as map(item(), item()*)) as element(rest:response) |
Summary | Creates a RESTXQ redirection to the specified location. The returned response will only work if no other items are returned by the RESTXQ function. If $parameters are specified, they will be appended as query parameters to the URL as described for web:create-url.
|
Examples |
<rest:response xmlns:rest="http://exquery.org/ns/restxq"> <http:response xmlns:http="http://expath.org/ns/http-client" status="302"> <http:header name="location" value="/a/b"/> </http:response> </rest:response>
declare %updating %rest:path('/app/init') function local:init() { db:create('app', <root/>, 'root.xml'), db:output(web:redirect('/app/main')) }; declare %rest:path('/app/main') function local:update() { 'Stored documents: ' || count(db:open('app')) }; |
web:response-header
Template:Mark third argument added; default parameters removed.
Signatures | web:response-header() as element(rest:response) web:response-header($output as map(*)) as element(rest:response) web:response-header($output as map(*), $headers as map(*)) as element(rest:response) web:response-header($output as map(*), $headers as map(*), $atts as map(*)) as element(rest:response) |
Summary | Creates a RESTXQ response header. Serialization parameters and header values can be supplied via the
Header options can be supplied via the
|
Examples |
<rest:response xmlns:rest="http://exquery.org/ns/restxq"> <http:response xmlns:http="http://expath.org/ns/http-client"/> <output:serialization-parameters xmlns:output="http://www.w3.org/2010/xslt-xquery-serialization"/> </rest:response>
web:response-header( map { 'media-type': 'application/octet-stream' }, map { 'Cache-Control': 'max-age=3600,public' }, map { 'status': 200, 'message': 'OK' } )
declare %rest:path('media/{$file}') function local:get($file) { let $path := 'path/to/' || $file return ( web:response-header(map { 'media-type': web:content-type($path) }), file:read-binary($path) ) }; |
Errors
Code | Description |
---|---|
invalid
|
A string contains invalid XML characters. |
Changelog
- Version 9.0
- Updated: web:response-header: third argument added; default parameters removed.
- Updated: error codes updated; errors now use the module namespace
- Version 8.4
- Updated: web:response-header: serialization method
raw
was removed (now obsolete).
- Version 8.2
- Added: web:encode-url, web:decode-url.
The module was introduced with Version 8.1.