Changes

Jump to navigation Jump to search
1,418 bytes added ,  20:19, 11 November 2019
=Conventions=
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/>All errors are assigned to the <code><nowiki>http://basex.org/errors</nowiki></code> namespace, which is statically bound to the {{Code|bxerr}} prefix.
=Functions=
==web:create-url==
 
{{Mark|Updated with Version 9.3:}} Third argument added.
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|web:create-url|$url as xs:string, $parameters as map(item(*)|xs:string}}<br/>{{Func|web:create-url|$url as xs:string, item$parameters as map()*), $anchor as xs:string|xs:string}}<br/>
|-
| '''Summary'''
|Creates a new URL from the specified <code>$url</code> string and the , query string <code>$parameters</code> specified in a mapand an optional {{Code|$anchor}} reference. The keys and and values of the map entries will be converted to strings, URL-encoded (see [[#web:encode-url|web:encode-url]]), and appended to the url URL as query parameters. If a map entry has more than a single item, all of them will be appended as single parameters.
|-
| '''Examples'''
|-
| '''Errors'''
|{{Error|BXWE0001invalid|#Errors}} Specified URI is the string contains invalidXML characters.|} ==web:forward== {{Mark|Introduced with Version 9.3:}} {| width='100%'
|-
| width='120' | '''ErrorsSignatures'''|{{ErrorFunc|web:forward|$path as xs:string|element(rest:forward)}}<br/>{{Func|web:forward|$path as xs:string, $parameters as map(*)|element(rest:forward)}}|-|BXWE0002'''Summary'''|Creates a server-side [[RESTXQ#ErrorsForwards and Redirects|RESTXQ forward request]] to the specified {{Code|$path}}. The client will not get notified of this forwarding.<br/>The {{Code|$parameter}} Specified URI contains invalid XML charactersargument is processed as described in [[#web:create-url|web:create-url]].|-| '''Examples'''|The function call <code><nowiki>web:forward('/a/b')</nowiki></code> creates the following result (which will be interpreted as forwarding if RESTXQ is used):<pre class="brush:xml"><rest:forward>/a/b</rest:forward></pre>
|}
==web:redirect==
 
{{Mark|Updated with Version 9.3:}} Third argument added.
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|web:redirect|$location url as xs:string|element(rest:response)}}<br/>{{Func|web:redirect|$location url as xs:string, $parameters as map(item*)|element(rest:response)}}<br/>{{Func|web:redirect|$url as xs:string, item$parameters as map()*), $anchor as xs:string|element(rest:response)}}<br/>
|-
| '''Summary'''
|Creates a [[RESTXQ#Forwards and Redirects|RESTXQ redirection]] to the specified location{{Code|$url}}. The returned response will only work if no other items are returned by the RESTXQ function.<br/>If <code>The {{Code|$parameters</code> }} and {{Code|$anchor}} arguments are specified, they will be appended as query parameters to the URL processed as described for in (see [[#web:create-url|web:create-url]]).
|-
| '''Examples'''
|
* The query <code><nowiki>web:redirect('/a/b')</nowiki></code> returns the following result (which will be interpreted as redirection if RESTXQ is used):
<pre class="brush:xml">
<rest:response xmlns:rest="http://exquery.org/ns/restxq">
</http:response>
</rest:response>
</pre>
* The first RESTXQ function creates an initial database, and redirects to a second function that will access this database:
<pre class="brush:xquery">
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'))
};
</pre>
|}
==web:response-header==
 
{{Mark|Updated with Version 9.0}}: third argument added; default parameters removed.
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|web:response-header||element(rest:response)}}<br/>{{Func|web:response-header|$output as map(*)?|element(rest:response)}}<br/>{{Func|web:response-header|$output as map(*)?, $headers as map(*)?|element(rest:response)}}<br/>{{Func|web:response-header|$output as map(*)?, $headers as map(*)?, $atts as map(*)?|element(rest:response)}}<br/>
|-
| '''Summary'''
|Creates a [[RESTXQ#Response|RESTXQ response header]].<br/>
Serialization parameters and header values can be supplied via the <code>$output</code> and <code>$headers</code> arguments, and status and message attributes can be attached to the top HTTP response element with the <code>$atts</code> argument.
* <code>media-type</code>: <code>application/octet-stream</code>
Header options can be supplied via the <code>$headers</code> argument. Empty string values can be specified to invalidate default values. By default, the following header options will be returned:
</rest:response>
</pre>
* The following function expression returns a media-type for binary data, a caching directive, and the OK status:<br/>
<pre class="brush:xquery">
web:response-header(
};
</pre>
|}
 
==web:error==
 
{{Mark|Introduced with Version 9.3:}}
 
{| width='100%'
|-
| width='120' | '''Signatures'''
|{{Func|web:error|$status as xs:integer, $message as xs:string|none}}<br/>
|-
| '''Summary'''
|Raises an error with the QName {{Code|rest:error}}, the specified {{Code|$message}} and the specified {{Code|$status}} as error value.<br/>Calls to this function are equivalent to <code>fn:error(xs:QName('rest:error'), $message, $status)</code>.
 
See [[RESTXQ#Raise Errors|RESTXQ: Raise Errors]] to learn how the function is helpful in web applications.
|-
| '''Examples'''
|
* <code><nowiki>web:error(404, "The requested resource cannot be found.")</nowiki></code>
|-
| '''Errors'''
|{{Error|status|#Errors}} The supplied status code is invalid.
|}
|Description
|-
|{{Code|BXWE0001invalid}}|Specified URL is A string contains invalidXML characters.
|-
|{{Code|BXWE0002status}}|Specified URL contains The supplied status code is invalid XML characters.
|}
=Changelog=
 
;Version 9.3
 
* Added: [[#web:error|web:error]], [[#web:forward|web:forward]]
 
;Version 9.2
 
* Updated: [[#web:create-url|web:create-url]], [[#web:redirect|web:redirect]]: third argument added.
;Version 9.0
* Updated: [[#web:response-header|web:response-header]]: third argumentadded; default parameters removed.* Updated: error codes updated; errors now use the module namespace
;Version 8.4
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu