Web Functions
This module provides convenience functions for building web applications with RESTXQ.
Conventions
All functions and errors are in the http://basex.org/modules/web namespace, to which the web prefix is statically bound.
Functions
Removed: web:forward: server-side forwarding was dropped.
web:content-type
| Signature | web:content-type( $path as xs:string ) as xs:string |
|---|---|
| Summary | Returns a content type for a path by analyzing the file suffix. application/octet-stream is returned if no mapping exists for the suffix.
Note that the returned value may change over time. |
| Examples | Result: 'audio/mpeg' |
web:create-url
| Signature | web:create-url(
$href as xs:string,
$parameters as map(*)? := {},
$anchor as xs:string? := ''
) as xs:string |
|---|---|
| Summary | Creates a new URL from the specified $href string, query string $parameters and an optional $anchor reference. The keys 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 | Result: 'http://find.me?q=dog' Result: `search?year=2000&year=2001` |
web:encode-url
| Signature | web:encode-url( $value as xs:string ) as xs:string |
|---|---|
| Summary | Encodes the specified string $value to a URL. Spaces are rewritten to +; *, -, . and _ are adopted; and all other non-ASCII characters and special characters are percent-encoded. |
| Examples | Result: 'this+is+a+test%21.html' |
web:decode-url
| Signature | web:decode-url( $value as xs:string ) as xs:string |
|---|---|
| Summary | Decodes the specified URL $value to the original string. Percent-encoded characters are decoded to their UTF8 codepoints, and + characters are rewritten to spaces. |
| Examples | Result: '日本語' |
web:redirect
Updated: Status parameter added.
| Signature | web:redirect(
$url as xs:string,
$parameters as map(*)? := {},
$anchor as xs:string? := '',
$status as xs:integer? := 302
) as element(rest:response) |
|---|---|
| Summary | Creates a RESTXQ redirection to the specified $url. The returned response will only work if no other items are returned by the RESTXQ function. The $parameters and $anchor arguments are processed as described for web:create-url. |
| Examples | …is interpreted as redirection directive if RESTXQ is used. The result: |
web:response-header
updated: message attribute removed (deprecated Servlet API feature).
| Signature | web:response-header( $output as map(*)? := (), $headers as map(*)? := (), $response as map(*)? := () ) as element(rest:response) |
|---|---|
| Summary | Creates a RESTXQ response header.
Serialization parameters and header values can be supplied via the |
| Examples | Returns a media-type for binary data, a caching directive, and the OK status.Returns the contents of a file to the client with correct media type. The result: |
web:error
Updated: $message can now be an arbitrary item, and serialization parameters can be supplied via the new $options argument.
| Signature | web:error(
$status as xs:integer,
$message as item()*,
$options as map(*)? := {}
) as none |
|---|---|
| Summary | Raises an error that is turned into an HTTP response with the supplied $status code and $message as response body:
See RESTXQ: Raise Errors to learn how the function is helpful in web applications. |
| Examples | Returns a 404 response with a plain-text body.Returns a 400 response with a JSON body (media type application/json). |
Changelog
Version 13- Updated:
web:error:$messagecan be an arbitrary item; serialization$optionsadded. - Updated:
web:response-header:messageattribute removed (deprecated Servlet API feature). - Updated:
web:redirect: Status parameter added. - Removed:
web:forward: server-side forwarding was dropped.
- Added:
web:error,web:forward
- Updated:
web:create-url,web:redirect: third argument added.
- Updated:
web:response-header: third argument added; default parameters removed. - Updated: error codes updated; errors now use the module namespace
- Updated:
web:response-header: serialization methodrawwas removed (now obsolete).
- Added:
web:encode-url,web:decode-url.
- Added: New module added.