interface Request {
    URL: URL;
    accept: Accepts;
    app: KoaApplication<KoaApplication.DefaultState, KoaApplication.DefaultContext>;
    charset: string;
    ctx: KoaContext;
    fresh: boolean;
    header: IncomingHttpHeaders;
    headers: IncomingHttpHeaders;
    host: string;
    hostname: string;
    href: string;
    idempotent: boolean;
    ip: string;
    ips: string[];
    length: number;
    method: string;
    origin: string;
    originalUrl: string;
    path: string;
    protocol: string;
    query: ParsedUrlQuery;
    querystring: string;
    req: IncomingMessage;
    res: ServerResponse<IncomingMessage>;
    response: KoaApplication.Response;
    search: string;
    secure: boolean;
    socket: Socket;
    stale: boolean;
    subdomains: string[];
    type: string;
    url: string;
    accepts(): string[];
    accepts(...types): string | false;
    accepts(types): string | false;
    acceptsCharsets(): string[];
    acceptsCharsets(...charsets): string | false;
    acceptsCharsets(charsets): string | false;
    acceptsEncodings(): string[];
    acceptsEncodings(...encodings): string | false;
    acceptsEncodings(encodings): string | false;
    acceptsLanguages(): string[];
    acceptsLanguages(...langs): string | false;
    acceptsLanguages(langs): string | false;
    get(field): string;
    inspect(): any;
    is(...types): null | string | false;
    is(types): null | string | false;
    toJSON(): any;
}

Hierarchy (view full)

Properties

URL: URL

Get WHATWG parsed URL object.

accept: Accepts
charset: string

Get the charset when present or undefined.

fresh: boolean

Check if the request is fresh, aka Last-Modified and/or the ETag still match.

header: IncomingHttpHeaders

Return request header.

headers: IncomingHttpHeaders

Return request header, alias as request.header

host: string

Parse the "Host" header field host and support X-Forwarded-Host when a proxy is enabled.

hostname: string

Parse the "Host" header field hostname and support X-Forwarded-Host when a proxy is enabled.

href: string

Get full request URL.

idempotent: boolean

Check if the request is idempotent.

ip: string

Request remote address. Supports X-Forwarded-For when app.proxy is true.

ips: string[]

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.

length: number

Return parsed Content-Length when present.

method: string

Get/Set request method.

origin: string

Get origin of URL.

originalUrl: string
path: string

Get request pathname. Set pathname, retaining the query-string when present.

protocol: string

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.

query: ParsedUrlQuery

Get parsed query-string. Set query-string as an object.

querystring: string

Get/Set query string.

req: IncomingMessage
res: ServerResponse<IncomingMessage>
search: 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.

secure: boolean

Short-hand for:

this.protocol == 'https'

socket: Socket

Return the request socket.

stale: boolean

Check if the request is stale, aka "Last-Modified" and / or the "ETag" for the resource has changed.

subdomains: string[]

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"].

type: string

Return the request mime type void of parameters such as "charset".

url: string

Get/Set request URL.

Methods

  • 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"

    Returns string[]

  • Parameters

    • Rest ...types: string[]

    Returns string | false

  • Parameters

    • types: string[]

    Returns string | false

  • 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']
    

    Returns string[]

  • Parameters

    • Rest ...charsets: string[]

    Returns string | false

  • Parameters

    • charsets: string[]

    Returns string | false

  • Return accepted encodings or best fit based on encodings.

    Given Accept-Encoding: gzip, deflate an array sorted by quality is returned:

    ['gzip', 'deflate']
    

    Returns string[]

  • Parameters

    • Rest ...encodings: string[]

    Returns string | false

  • Parameters

    • encodings: string[]

    Returns string | false

  • 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']
    

    Returns string[]

  • Parameters

    • Rest ...langs: string[]

    Returns string | false

  • Parameters

    • langs: string[]

    Returns string | false

  • 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');
    // => ''

    Parameters

    • field: string

    Returns string

  • Inspect implementation.

    Returns any

  • Check if the incoming request contains the "Content-Type" header field, and it contains any of the give mime types. 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

    Parameters

    • Rest ...types: string[]

    Returns null | string | false

  • Parameters

    • types: string[]

    Returns null | string | false

  • Return JSON representation.

    Returns any