Re: HTTP QUERY Design Team / Side Meeting

Glenn Strauss <gs-lists-ietf-http-wg@gluelogic.com> Mon, 18 March 2024 23:19 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=ietf.org@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3BEABC14CE38 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 18 Mar 2024 16:19:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.757
X-Spam-Level:
X-Spam-Status: No, score=-7.757 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=w3.org header.b="UTQWaaim"; dkim=pass (2048-bit key) header.d=w3.org header.b="lgHp1Zfe"
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nsvONOgLMfcn for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 18 Mar 2024 16:19:43 -0700 (PDT)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 63CC4C14CEE3 for <httpbisa-archive-bis2Juki@ietf.org>; Mon, 18 Mar 2024 16:19:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Subject:In-Reply-To:Content-Type:Mime-Version:References:Message-ID: To:From:Date:Cc:Reply-To; bh=3Ed2YFMcFKabckZxIhYYzOG6oThM8VyxQlWENwgQiTs=; b= UTQWaaimjKuVcB2qVONxRULtF6/2FIkeMgWNRgqtXChLaHH+nMHHs7qv0z8T3+NM9HOFEjSBdm3HF 2ZoWCzalLxeCaZtfkKgdKTo819fBr47UnyNxDHNjHjXpdkftJ8Km+CVm8EOX8tPoPD1L9YznJAI2x wlzMnVJ59rvvkIv/JYRHU3ETQUuDli1PrXqAQa6Tqw03toPidghvPLJmIC8g6Iocx91Qnzg5Ia90q svBo0hLuWM+kzry0IXv77BpqHnp2FjjyU+S/T03zCQwjqMpwHnTGqw/GI8vM+d1OQbVbdztUt5EtG qxfnP0fEJD4wF6WNAZf/zIUZ5Mkux+IOlA==;
Received: from lists by lyra.w3.org with local (Exim 4.94.2) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1rmMEw-000dkb-Lm for ietf-http-wg-dist@listhub.w3.org; Mon, 18 Mar 2024 23:17:58 +0000
Resent-Date: Mon, 18 Mar 2024 23:17:58 +0000
Resent-Message-Id: <E1rmMEw-000dkb-Lm@lyra.w3.org>
Received: from puck.w3.org ([34.196.82.207]) by lyra.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <gs-lists-ietf-http-wg@gluelogic.com>) id 1rmMEu-000djV-7D for ietf-http-wg@listhub.w3.org; Mon, 18 Mar 2024 23:17:56 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=In-Reply-To:Content-Type:Mime-Version:References:Message-ID:Subject: To:From:Date:Cc:Reply-To; bh=3Ed2YFMcFKabckZxIhYYzOG6oThM8VyxQlWENwgQiTs=; t=1710803876; x=1711667876; b=lgHp1ZfexGMynUwR6mHzxXo4q6qbOhU2ZaVuT5YMARlhBL9 SWIk6QydZdnjyCgO0w28G099UEsbIlUUv1KbKSVeNF9a/1jSioZ/CtztHzA0ztkkvQtccAzkUpeJw vyZEdT4De6BuRRkHvMn4+Th1IHlN0IeXwXw2jtqHiQgpJPUHb3txdnyadC3hYcf60zJfz/JSKd7jB MDXoDvG1omUr1pXtYFIvWfHN6+y4xFOGvX7kM0IIsyqN+gLkTL8ED1z0eS2ttnxjV8FXsX2FV2SmZ g9Mself/7qY8R6P93k5xk8T8900N1auGQRrH5y8Tk8bLsSY0gS7IW02h4QdceTSw==;
Received-SPF: pass (puck.w3.org: domain of gluelogic.com designates 52.86.233.228 as permitted sender) client-ip=52.86.233.228; envelope-from=gs-lists-ietf-http-wg@gluelogic.com; helo=smtp1.atof.net;
Received: from smtp1.atof.net ([52.86.233.228]) by puck.w3.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (Exim 4.96) (envelope-from <gs-lists-ietf-http-wg@gluelogic.com>) id 1rmMEt-009P0m-1E for ietf-http-wg@w3.org; Mon, 18 Mar 2024 23:17:55 +0000
X-Spam-Language: en
X-Spam-Relay-Country:
X-Spam-DCC: B=www.nova53.net; R=smtp1.atof.net 1205; Body=1 Fuz1=1 Fuz2=1
X-Spam-RBL:
X-Spam-PYZOR: Reported 0 times.
Date: Mon, 18 Mar 2024 19:17:43 -0400
From: Glenn Strauss <gs-lists-ietf-http-wg@gluelogic.com>
To: HTTP Working Group <ietf-http-wg@w3.org>
Message-ID: <ZfjLl2x5Hs0hosDc@xps13>
References: <B52B910D-9096-4A7D-8532-333E82F48E78@mnot.net>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
In-Reply-To: <B52B910D-9096-4A7D-8532-333E82F48E78@mnot.net>
X-W3C-Hub-Spam-Status: No, score=-3.9
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DMARC_MISSING=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: puck.w3.org 1rmMEt-009P0m-1E c03a28c27f0b768e29e28e4de2579853
X-Original-To: ietf-http-wg@w3.org
Subject: Re: HTTP QUERY Design Team / Side Meeting
Archived-At: <https://www.w3.org/mid/ZfjLl2x5Hs0hosDc@xps13>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/51898
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/email/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

On Mon, Mar 18, 2024 at 04:45:58PM +1000, Mark Nottingham wrote:
> We've scheduled a side meeting room on Thursday afternoon from 5-6pm (Brisbane time) to discuss the HTTP QUERY specification issues in more depth. 
> 
> If you're interested in contributing to this work, please come along; we'll be in M9.

I have some interest, but am not in Brisbane, and I think that would be
about 3am US/Eastern.  (No, thanks. :))

Some questions about the latest draft:
https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-safe-method-w-body

2. Query
[...]
> The semantics of the QUERY method change to a "conditional QUERY" if the request message includes an If-Modified-Since, If-Unmodified- Since, If-Match, If-None-Match, or If-Range header field ([HTTP], Section 13). A conditional QUERY requests that the query be performed only under the circumstances described by the conditional header field(s). It is important to note, however, that such conditions are evaluated against the state of the target resource itself as opposed to the collected results of the search operation.

"search operation" or "query operation"?
There are three instances of "search" still in the doc, including this one.

> It is important to note, however, that such conditions are evaluated against the state of the target resource itself as opposed to the collected results of the search operation.

Huh?  If the server knows that the data set against which the query is made has not changed, the server can answer an If-Modified-Since without performing the query.  Otherwise, if the server performs the query, and generates an ETag, does the current quoted text suggest that the ETag is "the state of the target resource itself as opposed to the collected results of the search operation" ?  That confuses me, as I would expect the ETag to be for result of the query (i.e. the response representation), not the target resource of the query, though I may be confused as to what "the target resource" refers.  If ETag generation is going to potentially be expensive, then the server might not generate an ETag for the result of the query.  Could the text be made a bit clearer about intentions, including suggesting that the server not produce an ETag if the server does not want to handle If-Match, If-None-Match with QUERY?


2.1. Caching 

In the case of request body is content-type: application/x-www-form-urlencoded, it might be helpful to note that the order of parameters may be significant, so sorting the parameters to normalize the key should not be done, unless there is some means that the server responds to indicate that the parameter order does not matter?  Maybe the server might have an option of a response header containing the partial parameters selected from the request which constitute the cache key, and also somehow indicate if parameter order matters?  o=[yn] or boolean ? structured-field?  Different request body content-types might provide more detailed guidance on how to normalize the cache key.  (How?  Where?  Same place where normalization is defined for that content-type?  Where might that be?)  Absent more specific guidance, the cache key should incorporate the request body verbatim, after well-defined normalization steps for that content-type.

Cheers, Glenn