Get the charset when present or undefined.
Check if the request is fresh, aka Last-Modified and/or the ETag still match.
Return request header.
Return request header, alias as request.header
Parse the "Host" header field host and support X-Forwarded-Host when a proxy is enabled.
Parse the "Host" header field hostname and support X-Forwarded-Host when a proxy is enabled.
Get full request URL.
Check if the request is idempotent.
Request remote address. Supports X-Forwarded-For when app.proxy is true.
When app.proxy
is true
, parse
the "X-Forwarded-For" ip address list.
For example if the value were "client, proxy1, proxy2"
you would receive the array ["client", "proxy1", "proxy2"]
where "proxy2" is the furthest down-stream.
Return parsed Content-Length when present.
Get/Set request method.
Get origin of URL.
Get request pathname. Set pathname, retaining the query-string when present.
Return the protocol string "http" or "https" when requested with TLS. When the proxy setting is enabled the "X-Forwarded-Proto" header field will be trusted. If you're running behind a reverse proxy that supplies https for you this may be enabled.
Get parsed query-string. Set query-string as an object.
Get/Set query string.
Get the search string. Same as the querystring except it includes the leading ?.
Set the search string. Same as response.querystring= but included for ubiquity.
Short-hand for:
this.protocol == 'https'
Return the request socket.
Check if the request is stale, aka "Last-Modified" and / or the "ETag" for the resource has changed.
Return subdomains as an array.
Subdomains are the dot-separated parts of the host before the main domain
of the app. By default, the domain of the app is assumed to be the last two
parts of the host. This can be changed by setting app.subdomainOffset
.
For example, if the domain is "tobi.ferrets.example.com":
If app.subdomainOffset
is not set, this.subdomains is
["ferrets", "tobi"]
.
If app.subdomainOffset
is 3, this.subdomains is ["tobi"]
.
Return the request mime type void of parameters such as "charset".
Get/Set request URL.
Check if the given type(s)
is acceptable, returning
the best match when true, otherwise false
, in which
case you should respond with 406 "Not Acceptable".
The type
value may be a single mime type string
such as "application/json", the extension name
such as "json" or an array ["json", "html", "text/plain"]
. When a list
or array is given the best match, if any is returned.
Examples:
// Accept: text/html
this.accepts('html');
// => "html"
// Accept: text/*, application/json
this.accepts('html');
// => "html"
this.accepts('text/html');
// => "text/html"
this.accepts('json', 'text');
// => "json"
this.accepts('application/json');
// => "application/json"
// Accept: text/*, application/json
this.accepts('image/png');
this.accepts('png');
// => undefined
// Accept: text/*;q=.5, application/json
this.accepts(['html', 'json']);
this.accepts('html', 'json');
// => "json"
Rest
...types: string[]Return accepted charsets or best fit based on charsets
.
Given Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5
an array sorted by quality is returned:
['utf-8', 'utf-7', 'iso-8859-1']
Rest
...charsets: string[]Return accepted encodings or best fit based on encodings
.
Given Accept-Encoding: gzip, deflate
an array sorted by quality is returned:
['gzip', 'deflate']
Rest
...encodings: string[]Return accepted languages or best fit based on langs
.
Given Accept-Language: en;q=0.8, es, pt
an array sorted by quality is returned:
['es', 'pt', 'en']
Rest
...langs: string[]Return request header. If the header is not set, will return an empty string.
The Referrer
header field is special-cased, both Referrer
and
Referer
are interchangeable.
Examples:
this.get('Content-Type');
// => "text/plain"
this.get('content-type');
// => "text/plain"
this.get('Something');
// => ''
Check if the incoming request contains the "Content-Type"
header field, and it contains any of the give mime type
s.
If there is no request body, null
is returned.
If there is no content type, false
is returned.
Otherwise, it returns the first type
that matches.
Examples:
// With Content-Type: text/html; charset=utf-8
this.is('html'); // => 'html'
this.is('text/html'); // => 'text/html'
this.is('text/*', 'application/json'); // => 'text/html'
// When Content-Type is application/json
this.is('json', 'urlencoded'); // => 'json'
this.is('application/json'); // => 'application/json'
this.is('html', 'application/*'); // => 'application/json'
this.is('html'); // => false
Rest
...types: string[]
Get WHATWG parsed URL object.