Difference between revisions of "Request Module"
Jump to navigation
Jump to search
m (Text replacement - "\[\[#([^]:]+:[^|]+)\|([^]:]+:[^|]+)\]\]" to "{{Function||$1}}") |
|||
Line 23: | Line 23: | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:method||xs:string}} | |{{Func|request:method||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the Method of the HTTP request. | |Returns the Method of the HTTP request. | ||
Line 35: | Line 35: | ||
==request:scheme== | ==request:scheme== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:scheme||xs:string}} | |{{Func|request:scheme||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the Scheme component of the URI of an HTTP request. | |Returns the Scheme component of the URI of an HTTP request. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, this function would return {{Code|foo}}. | |For the example given in the introduction, this function would return {{Code|foo}}. | ||
Line 48: | Line 48: | ||
==request:hostname== | ==request:hostname== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:hostname||xs:string}} | |{{Func|request:hostname||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the Hostname component of the URI of an HTTP request. | |Returns the Hostname component of the URI of an HTTP request. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, this function would return {{Code|example.com}}. | |For the example given in the introduction, this function would return {{Code|example.com}}. | ||
Line 61: | Line 61: | ||
==request:port== | ==request:port== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:port||xs:integer}} | |{{Func|request:port||xs:integer}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the Port component of the URI of an HTTP request, or a default port if it has not been explicitly specified in the URI. | |Returns the Port component of the URI of an HTTP request, or a default port if it has not been explicitly specified in the URI. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, this function would return {{Code|8042}}. | |For the example given in the introduction, this function would return {{Code|8042}}. | ||
Line 74: | Line 74: | ||
==request:path== | ==request:path== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:path||xs:string}} | |{{Func|request:path||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the Path component of the URI of an HTTP request. | |Returns the Path component of the URI of an HTTP request. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, this function would return {{Code|/over/there}}.<br/> | |For the example given in the introduction, this function would return {{Code|/over/there}}.<br/> | ||
Line 87: | Line 87: | ||
==request:query== | ==request:query== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:query||xs:string?}} | |{{Func|request:query||xs:string?}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the Query component of the URI of an HTTP request. If no query component exists, an empty sequence is returned. | |Returns the Query component of the URI of an HTTP request. If no query component exists, an empty sequence is returned. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, this function would return <code>name=ferret</code>.<br/> | |For the example given in the introduction, this function would return <code>name=ferret</code>.<br/> | ||
Line 100: | Line 100: | ||
==request:uri== | ==request:uri== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:uri||xs:anyURI}} | |{{Func|request:uri||xs:anyURI}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the complete URI of an HTTP request as it has been specified by the client. | |Returns the complete URI of an HTTP request as it has been specified by the client. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, this method would return <code>foo://example.com:8042/over/there?name=ferret</code>.<br/> | |For the example given in the introduction, this method would return <code>foo://example.com:8042/over/there?name=ferret</code>.<br/> | ||
Line 114: | Line 114: | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:context-path||xs:string}} | |{{Func|request:context-path||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the context of the request. For servlets in the default (root) context, this method returns an empty string. | |Returns the context of the request. For servlets in the default (root) context, this method returns an empty string. | ||
Line 126: | Line 126: | ||
==request:address== | ==request:address== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:address||xs:string}} | |{{Func|request:address||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the IP address of the server. | |Returns the IP address of the server. | ||
Line 136: | Line 136: | ||
==request:remote-hostname== | ==request:remote-hostname== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:remote-hostname||xs:string}} | |{{Func|request:remote-hostname||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the fully qualified hostname of the client that sent the request. | |Returns the fully qualified hostname of the client that sent the request. | ||
Line 146: | Line 146: | ||
==request:remote-address== | ==request:remote-address== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:remote-address||xs:string}} | |{{Func|request:remote-address||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the IP address of the client that sent the request. | |Returns the IP address of the client that sent the request. | ||
Line 156: | Line 156: | ||
==request:remote-port== | ==request:remote-port== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:remote-port||xs:string}} | |{{Func|request:remote-port||xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the TCP port of the client socket that triggered the request. | |Returns the TCP port of the client socket that triggered the request. | ||
Line 169: | Line 169: | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:parameter-names||xs:string*}} | |{{Func|request:parameter-names||xs:string*}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the names of all query and form field parameters available from the HTTP request. With [[RESTXQ]], this function can be used to access parameters that have not been statically bound by [[RESTXQ#Query Parameters|%rest:query-param]]. | |Returns the names of all query and form field parameters available from the HTTP request. With [[RESTXQ]], this function can be used to access parameters that have not been statically bound by [[RESTXQ#Query Parameters|%rest:query-param]]. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, this function would return {{Code|name}}.<br/> | |For the example given in the introduction, this function would return {{Code|name}}.<br/> | ||
− | |- | + | |- valign="top" |
| '''Errors''' | | '''Errors''' | ||
|{{Error|parameter|#Errors}} the request has invalid parameters. | |{{Error|parameter|#Errors}} the request has invalid parameters. | ||
Line 186: | Line 186: | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:parameter|$name as xs:string|xs:string*}}<br/>{{Func|request:parameter|$name as xs:string, $default as xs:string|xs:string*}} | |{{Func|request:parameter|$name as xs:string|xs:string*}}<br/>{{Func|request:parameter|$name as xs:string, $default as xs:string|xs:string*}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the value of the named query or form field parameter in an HTTP request. If the parameter does not exist, an empty sequence or the optionally specified default value is returned instead. If both query and form field parameters with the same name exist, the form field values will be attached to the query values. | |Returns the value of the named query or form field parameter in an HTTP request. If the parameter does not exist, an empty sequence or the optionally specified default value is returned instead. If both query and form field parameters with the same name exist, the form field values will be attached to the query values. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
|For the example given in the introduction, the function call {{Code|request:parameter('name')}} would return {{Code|ferret}}.<br/> | |For the example given in the introduction, the function call {{Code|request:parameter('name')}} would return {{Code|ferret}}.<br/> | ||
− | |- | + | |- valign="top" |
| '''Errors''' | | '''Errors''' | ||
|{{Error|parameter|#Errors}} the request has invalid parameters. | |{{Error|parameter|#Errors}} the request has invalid parameters. | ||
Line 204: | Line 204: | ||
==request:header-names== | ==request:header-names== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:header-names||xs:string*}} | |{{Func|request:header-names||xs:string*}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the names of all headers available from the HTTP request. If [[RESTXQ]] is used, this function can be used to access headers that have not been statically bound by [[RESTXQ#HTTP Headers|%rest:header-param]]. | |Returns the names of all headers available from the HTTP request. If [[RESTXQ]] is used, this function can be used to access headers that have not been statically bound by [[RESTXQ#HTTP Headers|%rest:header-param]]. | ||
Line 214: | Line 214: | ||
==request:header== | ==request:header== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:header|$name as xs:string|xs:string?}}<br/>{{Func|request:header|$name as xs:string, $default as xs:string|xs:string}} | |{{Func|request:header|$name as xs:string|xs:string?}}<br/>{{Func|request:header|$name as xs:string, $default as xs:string|xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the value of the named header in an HTTP request. If the header does not exist, an empty sequence or the optionally specified default value is returned instead. | |Returns the value of the named header in an HTTP request. If the header does not exist, an empty sequence or the optionally specified default value is returned instead. | ||
Line 226: | Line 226: | ||
==request:cookie-names== | ==request:cookie-names== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:cookie-names||xs:string*}} | |{{Func|request:cookie-names||xs:string*}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the names of all cookies in the HTTP headers available from the HTTP request. If [[RESTXQ]] is used, this function can be used to access cookies that have not been statically bound by [[RESTXQ#Cookies|%rest:cookie-param]]. | |Returns the names of all cookies in the HTTP headers available from the HTTP request. If [[RESTXQ]] is used, this function can be used to access cookies that have not been statically bound by [[RESTXQ#Cookies|%rest:cookie-param]]. | ||
Line 236: | Line 236: | ||
==request:cookie== | ==request:cookie== | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:cookie|$name as xs:string|xs:string?}}<br/>{{Func|request:cookie|$name as xs:string, $default as xs:string|xs:string}} | |{{Func|request:cookie|$name as xs:string|xs:string?}}<br/>{{Func|request:cookie|$name as xs:string, $default as xs:string|xs:string}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the value of the named Cookie in an HTTP request. If there is no such cookie, an empty sequence or the optionally specified default value is returned instead. | |Returns the value of the named Cookie in an HTTP request. If there is no such cookie, an empty sequence or the optionally specified default value is returned instead. | ||
Line 249: | Line 249: | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:attribute-names||xs:string*}} | |{{Func|request:attribute-names||xs:string*}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the names of all HTTP request attributes. | |Returns the names of all HTTP request attributes. | ||
Line 260: | Line 260: | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:attribute|$name as xs:string|item()*}}<br/>{{Func|request:attribute|$name as xs:string, $default as item()*|item()*}} | |{{Func|request:attribute|$name as xs:string|item()*}}<br/>{{Func|request:attribute|$name as xs:string, $default as item()*|item()*}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Returns the value of an attribute of the HTTP request. If the attribute does not exist, an empty sequence or the optionally specified default value is returned instead. | |Returns the value of an attribute of the HTTP request. If the attribute does not exist, an empty sequence or the optionally specified default value is returned instead. | ||
− | |- | + | |- valign="top" |
| '''Example''' | | '''Example''' | ||
| | | | ||
Line 276: | Line 276: | ||
{| width='100%' | {| width='100%' | ||
− | |- | + | |- valign="top" |
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
|{{Func|request:set-attribute|$name as xs:string, $value as item()*|empty-sequence()}} | |{{Func|request:set-attribute|$name as xs:string, $value as item()*|empty-sequence()}} | ||
− | |- | + | |- valign="top" |
| '''Summary''' | | '''Summary''' | ||
|Binds the specified {{Code|$value}} to the request attribute with the specified {{Code|$name}}. | |Binds the specified {{Code|$value}} to the request attribute with the specified {{Code|$name}}. | ||
Line 289: | Line 289: | ||
! width="110"|Code | ! width="110"|Code | ||
|Description | |Description | ||
− | |- | + | |- valign="top" |
|{{Code|parameter}} | |{{Code|parameter}} | ||
|Request has invalid parameters. | |Request has invalid parameters. |
Revision as of 14:20, 20 July 2022
This XQuery Module contains functions for retrieving information on an HTTP request that has triggered the query. It is mostly useful when building Web Applications.
The module is based on the EXQuery Request Module draft.
Contents
Conventions
- The module will be available if the
basex-api
library is found in the classpath. This is the case if you use one of the complete distributions of BaseX (zip, exe, war). - All functions are assigned to the
http://exquery.org/ns/request
namespace, which is statically bound to therequest
prefix. - If any of the functions is called outside the servlet context,
basex:http
is raised.
The following example illustrated what components a URI may consist of (the example is derived from RFC 3986):
foo://example.com:8042/over/there?name=ferret \_/ \_________/ \__/\_________/ \_________/ | | | | | scheme hostname port path query
General Functions
request:method
Signatures | request:method() as xs:string
|
Summary | Returns the Method of the HTTP request. |
URI Functions
request:scheme
Signatures | request:scheme() as xs:string
|
Summary | Returns the Scheme component of the URI of an HTTP request. |
Example | For the example given in the introduction, this function would return foo .
|
request:hostname
Signatures | request:hostname() as xs:string
|
Summary | Returns the Hostname component of the URI of an HTTP request. |
Example | For the example given in the introduction, this function would return example.com .
|
request:port
Signatures | request:port() as xs:integer
|
Summary | Returns the Port component of the URI of an HTTP request, or a default port if it has not been explicitly specified in the URI. |
Example | For the example given in the introduction, this function would return 8042 .
|
request:path
Signatures | request:path() as xs:string
|
Summary | Returns the Path component of the URI of an HTTP request. |
Example | For the example given in the introduction, this function would return /over/there . |
request:query
Signatures | request:query() as xs:string?
|
Summary | Returns the Query component of the URI of an HTTP request. If no query component exists, an empty sequence is returned. |
Example | For the example given in the introduction, this function would return name=ferret . |
request:uri
Signatures | request:uri() as xs:anyURI
|
Summary | Returns the complete URI of an HTTP request as it has been specified by the client. |
Example | For the example given in the introduction, this method would return foo://example.com:8042/over/there?name=ferret . |
request:context-path
Signatures | request:context-path() as xs:string
|
Summary | Returns the context of the request. For servlets in the default (root) context, this method returns an empty string. |
Connection Functions
request:address
Signatures | request:address() as xs:string
|
Summary | Returns the IP address of the server. |
request:remote-hostname
Signatures | request:remote-hostname() as xs:string
|
Summary | Returns the fully qualified hostname of the client that sent the request. |
request:remote-address
Signatures | request:remote-address() as xs:string
|
Summary | Returns the IP address of the client that sent the request. |
request:remote-port
Signatures | request:remote-port() as xs:string
|
Summary | Returns the TCP port of the client socket that triggered the request. |
Parameter Functions
request:parameter-names
Signatures | request:parameter-names() as xs:string*
|
Summary | Returns the names of all query and form field parameters available from the HTTP request. With RESTXQ, this function can be used to access parameters that have not been statically bound by %rest:query-param. |
Example | For the example given in the introduction, this function would return name . |
Errors | parameter : the request has invalid parameters.
|
request:parameter
Signatures | request:parameter($name as xs:string) as xs:string* request:parameter($name as xs:string, $default as xs:string) as xs:string*
|
Summary | Returns the value of the named query or form field parameter in an HTTP request. If the parameter does not exist, an empty sequence or the optionally specified default value is returned instead. If both query and form field parameters with the same name exist, the form field values will be attached to the query values. |
Example | For the example given in the introduction, the function call request:parameter('name') would return ferret . |
Errors | parameter : the request has invalid parameters.
|
Header Functions
request:header-names
Signatures | request:header-names() as xs:string*
|
Summary | Returns the names of all headers available from the HTTP request. If RESTXQ is used, this function can be used to access headers that have not been statically bound by %rest:header-param. |
request:header
Signatures | request:header($name as xs:string) as xs:string? request:header($name as xs:string, $default as xs:string) as xs:string
|
Summary | Returns the value of the named header in an HTTP request. If the header does not exist, an empty sequence or the optionally specified default value is returned instead. |
Cookie Functions
request:cookie-names
Signatures | request:cookie-names() as xs:string*
|
Summary | Returns the names of all cookies in the HTTP headers available from the HTTP request. If RESTXQ is used, this function can be used to access cookies that have not been statically bound by %rest:cookie-param. |
request:cookie
Signatures | request:cookie($name as xs:string) as xs:string? request:cookie($name as xs:string, $default as xs:string) as xs:string
|
Summary | Returns the value of the named Cookie in an HTTP request. If there is no such cookie, an empty sequence or the optionally specified default value is returned instead. |
Attribute Functions
request:attribute-names
Signatures | request:attribute-names() as xs:string*
|
Summary | Returns the names of all HTTP request attributes. |
request:attribute
Signatures | request:attribute($name as xs:string) as item()* request:attribute($name as xs:string, $default as item()*) as item()*
|
Summary | Returns the value of an attribute of the HTTP request. If the attribute does not exist, an empty sequence or the optionally specified default value is returned instead. |
Example |
|
request:set-attribute
Signatures | request:set-attribute($name as xs:string, $value as item()*) as empty-sequence()
|
Summary | Binds the specified $value to the request attribute with the specified $name .
|
Errors
Code | Description |
---|---|
parameter
|
Request has invalid parameters. |
Changelog
- Version 9.3
- Added:
request:attribute-names
,request:set-attribute
- Updated:
request:attribute
: return type generalized, default argument added
- Version 7.9
- Updated: The returned values of
request:parameter-names
,request:parameter
now also include form field parameters.
- Version 7.8
- Added:
request:context-path
- Version 7.7
- Added:
request:attribute
This module was introduced with Version 7.5.