Re: How to express no matching results in HTTP SEARH method?
"Roy T. Fielding" <fielding@gbiv.com> Thu, 05 November 2020 20:48 UTC
Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@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 790BF3A1A39 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 5 Nov 2020 12:48:54 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.748
X-Spam-Level:
X-Spam-Status: No, score=-2.748 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, MAILING_LIST_MULTI=-1, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=gbiv.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z2VuHLaPmYHM for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 5 Nov 2020 12:48:52 -0800 (PST)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C46C53A1A37 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 5 Nov 2020 12:48:52 -0800 (PST)
Received: from lists by lyra.w3.org with local (Exim 4.92) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1kam9H-0007cH-QF for ietf-http-wg-dist@listhub.w3.org; Thu, 05 Nov 2020 20:46:24 +0000
Resent-Date: Thu, 05 Nov 2020 20:46:23 +0000
Resent-Message-Id: <E1kam9H-0007cH-QF@lyra.w3.org>
Received: from mimas.w3.org ([128.30.52.79]) by lyra.w3.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <fielding@gbiv.com>) id 1kam9G-0007bW-KQ for ietf-http-wg@listhub.w3.org; Thu, 05 Nov 2020 20:46:22 +0000
Received: from bumble.maple.relay.mailchannels.net ([23.83.214.25]) by mimas.w3.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <fielding@gbiv.com>) id 1kam9E-0005M3-QA for ietf-http-wg@w3.org; Thu, 05 Nov 2020 20:46:22 +0000
X-Sender-Id: dreamhost|x-authsender|fielding@gbiv.com
Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 3F22C70057D; Thu, 5 Nov 2020 20:46:08 +0000 (UTC)
Received: from pdx1-sub0-mail-a17.g.dreamhost.com (100-96-22-112.trex.outbound.svc.cluster.local [100.96.22.112]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 46E4A700313; Thu, 5 Nov 2020 20:46:07 +0000 (UTC)
X-Sender-Id: dreamhost|x-authsender|fielding@gbiv.com
Received: from pdx1-sub0-mail-a17.g.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.18.10); Thu, 05 Nov 2020 20:46:08 +0000
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|fielding@gbiv.com
X-MailChannels-Auth-Id: dreamhost
X-Decisive-Power: 553e9ec16542c008_1604609167785_2243770524
X-MC-Loop-Signature: 1604609167784:1093502281
X-MC-Ingress-Time: 1604609167784
Received: from pdx1-sub0-mail-a17.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a17.g.dreamhost.com (Postfix) with ESMTP id 0CB027ED97; Thu, 5 Nov 2020 12:46:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gbiv.com; h=content-type :mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; s=gbiv.com; bh=lR06XdsH9Cr3uepM+ZVaT0/qDw0=; b=tpIHVq8w8kx75WxCe/XzdRjsfxUr r/3xV8i0U71QaNOm3Q5L41r4PSjK7GMPpI31b/qI94ItFbSImnU3K/DUIGdAjyOH LIOXXEUlbvqCY77G0BUkTlviv11wY4VEol82wnPtjuiB7dr8KVmUIrSeyp/YLXZH SlSWeJ9zZ4gUyK4=
Received: from [192.168.1.10] (ip68-101-102-139.oc.oc.cox.net [68.101.102.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: fielding@gbiv.com) by pdx1-sub0-mail-a17.g.dreamhost.com (Postfix) with ESMTPSA id B74E17ED9B; Thu, 5 Nov 2020 12:46:02 -0800 (PST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.17\))
X-DH-BACKEND: pdx1-sub0-mail-a17
From: "Roy T. Fielding" <fielding@gbiv.com>
In-Reply-To: <CH2PR22MB20861A3757E53A0AF992F61EDAEE0@CH2PR22MB2086.namprd22.prod.outlook.com>
Date: Thu, 05 Nov 2020 12:46:01 -0800
Cc: Ben Schwartz <bemasc@google.com>, Stephane Bortzmeyer <bortzmeyer@nic.fr>, Sawood Alam <ibnesayeed@gmail.com>, Julian Reschke <julian.reschke@gmx.de>, ietf-http-wg <ietf-http-wg@w3.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <272262AB-8566-413F-87BB-863EC60CAF0B@gbiv.com>
References: <CALOnmf-e24a=9ScKg3M==cSpG8TMd1JnMiecWgUMtD0a17xRgA@mail.gmail.com> <a599a2ba-ad97-b87d-6762-422cde1c1a41@gmx.de> <CALOnmf9fphWhDE+AceBduMKEx6qNFUeVtcZ-nVyVeTs_hOp=RQ@mail.gmail.com> <20201105110635.GA9397@sources.org> <0B420CEF-BE1D-4FCF-B205-B64CC99568C2@gbiv.com> <CAHbrMsArA6j8_q-GXkbgdu9uCBBOMdrr6gRSV=-K68NUoXyi4w@mail.gmail.com> <58400266-E730-473E-A1E4-B6894F9C02D9@gbiv.com> <CH2PR22MB20861A3757E53A0AF992F61EDAEE0@CH2PR22MB2086.namprd22.prod.outlook.com>
To: Mike Bishop <mbishop@evequefou.be>
X-Mailer: Apple Mail (2.3445.104.17)
Received-SPF: pass client-ip=23.83.214.25; envelope-from=fielding@gbiv.com; helo=bumble.maple.relay.mailchannels.net
X-W3C-Hub-Spam-Status: No, score=-6.1
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_DB=-1, W3C_IRA=-1, W3C_WL=-1
X-W3C-Scan-Sig: mimas.w3.org 1kam9E-0005M3-QA 362c81dd11c918b26f917d5415bcd5d2
X-Original-To: ietf-http-wg@w3.org
Subject: Re: How to express no matching results in HTTP SEARH method?
Archived-At: <https://www.w3.org/mid/272262AB-8566-413F-87BB-863EC60CAF0B@gbiv.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/38190
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/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>
> On Nov 5, 2020, at 11:37 AM, Mike Bishop <mbishop@evequefou.be> wrote: > > Roy, you seem to be disagreeing, but then presenting a detailed argument for > the same position you're disagreeing with. If the search was successfully > performed on a resource, and the result of the search is an empty set, > that's a successful operation (2XX). If the search could not be performed > for some reason, that's an error (4XX, 5XX). That wasn't what I was responding to. The example given was a response that was not a successful search: "SERVFAIL or NXDOMAIN" having a status of 2xx. That's wrong. > I'm confused. Can you clarify why you don't believe that aligns with "if a > search is successfully performed, then HTTP has succeeded"? The general statement of "when a search is successfully performed we would expect a 2xx response" is true to the extent that what the application is actually doing is searching for something wherein "none found" is a successful response, like most queries that respond with a list of resources that match. But SEARCH (the method) isn't limited to searching for something according to some criteria. Maybe it should be. Maybe not. I don't think it matters, so long as the protocol is self-descriptive and doesn't respond success when the request actually failed by its own semantics. > (I disagree with you slightly about "find some among many," because the > resource to be searched could be present but empty. I think the > differentiator is whether the targeted resource exists, regardless of what > it contains.) This isn't a helpful way to think. What we want from status codes at the HTTP level is an indication of what recipients can do to "fix this" even when they are not aware of the specific application being processed over HTTP. A success doesn't need to be fixed. For example, BigCo pays X megabucks to ensure that all valid queries are processed within 50ms, including severe penalties when they don't. The X has megaservers to respond to megaclients, but still doesn't control probability and can't afford to buy a separate set of megaservers for every specific application. So, it sprays all SEARCH requests to N recipient servers in parallel and forwards the first successful response. X cannot do that if it has to look inside the body of a response to make an application-specific decision about whether that response contains a successful SEARCH response. Likewise, it might have an auditing requirement to store invalid queries for some period of time, which it could do in 1 place if the response indicates validity or in N places if it does not. The easy thing for application developers to do is to always send a 200 and make excuses within the content. If that was generally considered to be an okay thing for one use of HTTP, it would soon be for all uses of HTTP, and a whole bunch of things that allow HTTP traffic to scale start failing. ....Roy
- How to express no matching results in HTTP SEARH … Sawood Alam
- Re: How to express no matching results in HTTP SE… Julian Reschke
- Re: How to express no matching results in HTTP SE… Julian Reschke
- Re: How to express no matching results in HTTP SE… Sawood Alam
- Re: How to express no matching results in HTTP SE… Poul-Henning Kamp
- Re: How to express no matching results in HTTP SE… Julian Reschke
- Re: How to express no matching results in HTTP SE… Poul-Henning Kamp
- Re: How to express no matching results in HTTP SE… Julian Reschke
- Re: How to express no matching results in HTTP SE… James M Snell
- Re: How to express no matching results in HTTP SE… Roberto Polli
- Re: How to express no matching results in HTTP SE… Julian Reschke
- Re: How to express no matching results in HTTP SE… Poul-Henning Kamp
- Re: How to express no matching results in HTTP SE… Willy Tarreau
- Re: How to express no matching results in HTTP SE… Austin Wright
- Re: How to express no matching results in HTTP SE… Carsten Bormann
- Re: How to express no matching results in HTTP SE… Austin Wright
- Re: How to express no matching results in HTTP SE… Henry Story
- Re: How to express no matching results in HTTP SE… Willy Tarreau
- Re: How to express no matching results in HTTP SE… Stephane Bortzmeyer
- Re: How to express no matching results in HTTP SE… Julian Reschke
- Re: How to express no matching results in HTTP SE… Roy T. Fielding
- Re: How to express no matching results in HTTP SE… Ben Schwartz
- Re: How to express no matching results in HTTP SE… Roy T. Fielding
- RE: How to express no matching results in HTTP SE… Mike Bishop
- Re: How to express no matching results in HTTP SE… Roy T. Fielding