constructor(url, query, message) {
    this.handler = null;
    this._request = null;
    this.url = url;

    this.data = {
      body: message.content,
      requestId: message.requestId,
      ...query,
    };

    this.connection = {
      connection: {
        headers: message.headers,
        id: message.connection.id,
        ips: message.ips,
        path: message.path,
        protocol: "http",
        // @deprecated use "path" instead
        url: message.url,
        verb: message.method,
      },
    };

    for (const k of Object.keys(message.headers)) {
      if (
        k.toLowerCase() === "authorization" &&
        message.headers[k].toLowerCase().startsWith("bearer ")
      ) {
        this.data.jwt = message.headers[k].substring("Bearer ".length);
      } else if (k.toLowerCase() === "x-kuzzle-volatile") {
        try {
          this.data.volatile = JSON.parse(message.headers[k]);
        } catch (e) {
          throw kerror.getFrom(e, "volatile_parse_failed", e.message);
        }
      }
    }
  }
Object returned by routePart.getHandler(),
containing the information gathered about
a requested route and the corresponding handler
to invoke

@class RouteHandler
@param {string} url - parsed URL
@param {object} query - parsed query string
@param {HttpMessage} message
@throws {BadRequestError} If x-kuzzle-volatile HTTP header can not be parsed
                          in JSON format