Difference between revisions of "Web Module"
| Line 65: | Line 65: | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
| − | |{{Func|web:response-header|$ | + | |{{Func|web:response-header||element(rest:response)}}<br/>{{Func|web:response-header|$headers as map(*)|element(rest:response)}}<br/>{{Func|web:response-header|$headers as map(*), $output as map(*)|element(rest:response)}}<br/> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
| − | |Creates a [[RESTXQ#Response|RESTXQ reponse header]] | + | |Creates a [[RESTXQ#Response|RESTXQ reponse header]] with a default caching directive and default serialization parameters.<br/> |
| + | 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: | ||
| + | * <code>Cache-Control</code>: <code>max-age=3600,public</code> | ||
| + | <br/> | ||
| + | Serialization parameters can be supplied via the <code>$output</code> argument. Empty string values can be specified to invalidate default values. By default, the following serialization parameters will be returned: | ||
| + | * <code>media-type</code>: <code>application/octet-stream</code> | ||
| + | * <code>method</code>: <code>raw</code> | ||
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
| − | | | + | | |
| − | + | * The function call <code>web:response-header()</code> returns the following response element: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | </ | ||
| − | |||
<pre class="brush:xml"> | <pre class="brush:xml"> | ||
<rest:response xmlns:rest="http://exquery.org/ns/restxq"> | <rest:response xmlns:rest="http://exquery.org/ns/restxq"> | ||
| − | <http:response xmlns:http="http://expath.org/ns/http-client | + | <http:response xmlns:http="http://expath.org/ns/http-client"> |
<http:header name="Cache-Control" value="max-age=3600,public"/> | <http:header name="Cache-Control" value="max-age=3600,public"/> | ||
</http:response> | </http:response> | ||
<output:serialization-parameters xmlns:output="http://www.w3.org/2010/xslt-xquery-serialization"> | <output:serialization-parameters xmlns:output="http://www.w3.org/2010/xslt-xquery-serialization"> | ||
| − | <output:media-type value=" | + | <output:media-type value="application/octet-stream"/> |
<output:method value="raw"/> | <output:method value="raw"/> | ||
</output:serialization-parameters> | </output:serialization-parameters> | ||
| − | </rest:response>, | + | </rest:response> |
| − | + | </pre> | |
| + | * If the following RESTXQ function is called by a web browser…<br/> | ||
| + | <pre class="brush:xquery"> | ||
| + | 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) | ||
| + | ) | ||
| + | }; | ||
</pre> | </pre> | ||
| + | …a file resource with the correct content-type will be returned to user (provided that it exists in the web server's file system). | ||
|} | |} | ||
Revision as of 12:25, 28 March 2015
This XQuery Module provides convenience functions for building web applications with RESTXQ.
Contents
Conventions
All functions in this module are assigned to the http://basex.org/modules/web namespace, which is statically bound to the web prefix.
All errors are assigned to the http://basex.org/errors namespace, which is statically bound to the bxerr 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(*)) 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, URI-encoded, 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:redirect
| Signatures | web:redirect($location as xs:string) as element(rest:response) |
| Summary | Creates a RESTXQ redirection to the specified location. Redirects will only work if no other items are returned. |
| Examples | The query web:redirect('/a/b') returns the following response element:
<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>
|
web:response-header
| Signatures | web:response-header() as element(rest:response)web:response-header($headers as map(*)) as element(rest:response)web:response-header($headers as map(*), $output as map(*)) as element(rest:response) |
| Summary | Creates a RESTXQ reponse header with a default caching directive and default serialization parameters. 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">
<http:header name="Cache-Control" value="max-age=3600,public"/>
</http:response>
<output:serialization-parameters xmlns:output="http://www.w3.org/2010/xslt-xquery-serialization">
<output:media-type value="application/octet-stream"/>
<output:method value="raw"/>
</output:serialization-parameters>
</rest:response>
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)
)
};
…a file resource with the correct content-type will be returned to user (provided that it exists in the web server's file system). |
Changelog
The module was introduced with Version 8.1.