Difference between revisions of "Web Module"
Jump to navigation
Jump to search
Line 3: | Line 3: | ||
=Conventions= | =Conventions= | ||
− | All functions in this module are assigned to the <code><nowiki>http://basex.org/modules/web</nowiki></code> namespace, which is statically bound to the {{Code|web}} prefix.<br/> | + | {{Mark|Updated with Version 9.0}}: |
− | + | ||
+ | All functions and errors in this module are assigned to the <code><nowiki>http://basex.org/modules/web</nowiki></code> namespace, which is statically bound to the {{Code|web}} prefix.<br/> | ||
=Functions= | =Functions= | ||
Line 69: | Line 70: | ||
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
− | |{{Error| | + | |{{Error|invalid|#Errors}} the string contains invalid XML characters. |
− | |||
− | |||
− | |||
|} | |} | ||
Line 154: | Line 152: | ||
=Errors= | =Errors= | ||
+ | |||
+ | {{Mark|Updated with Version 9.0}}: | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
Line 159: | Line 159: | ||
|Description | |Description | ||
|- | |- | ||
− | |{{Code| | + | |{{Code|invalid}} |
− | + | |A string contains invalid XML characters. | |
− | |||
− | |||
− | | | ||
|} | |} | ||
Line 171: | Line 168: | ||
* Updated: [[#web:response-header|web:response-header]]: third argument added; default parameters removed. | * Updated: [[#web:response-header|web:response-header]]: third argument added; default parameters removed. | ||
+ | * Updated: error codes updated; errors now use the module namespace | ||
;Version 8.4 | ;Version 8.4 |
Revision as of 18:14, 21 November 2017
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.