Re: [Last-Call] [httpapi] Last Call: <draft-ietf-httpapi-link-template-02.txt> (The Link-Template HTTP Header Field) to Proposed Standard

Mark Nottingham <mnot@mnot.net> Thu, 18 May 2023 12:10 UTC

Return-Path: <mnot@mnot.net>
X-Original-To: last-call@ietfa.amsl.com
Delivered-To: last-call@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6E49BC15152B; Thu, 18 May 2023 05:10:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.798
X-Spam-Level:
X-Spam-Status: No, score=-2.798 tagged_above=-999 required=5 tests=[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_LOW=-0.7, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, 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=mnot.net header.b="LDRQJJJz"; dkim=pass (2048-bit key) header.d=messagingengine.com header.b="Zv/x/6+s"
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 kGOIiqSsBElh; Thu, 18 May 2023 05:10:36 -0700 (PDT)
Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com [64.147.123.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 85482C151066; Thu, 18 May 2023 05:10:36 -0700 (PDT)
Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id C38293200A43; Thu, 18 May 2023 08:10:34 -0400 (EDT)
Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 18 May 2023 08:10:35 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mnot.net; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm2; t= 1684411834; x=1684498234; bh=iEVFqtw1JqekODOotC2ub4LPeuBKuGhKreW qMPrAL0Q=; b=LDRQJJJzn9fS2QzOk4NSXn77TuITwnyXOSZBo/wLLkM4/Vq14Zk 8KMdXUqAPM74KDoo2Ogwdi+Qqz+L6jgSGNOxhB6clIXA4vos/EpyNTTpu7ofJ+4/ DVTl8huuQCiddRbSwJdZWylJ4AhUr3Owwws0zdZfV3+Rml4NPVXnIJmRiq4NbcRz 2DglE8Apv+p4QjhaKUd4T4alkYnjeUjhfWECXxpLV0tHrYPi0AaWsPDG0UK2zJka Q2DMDtZ2pLxHu9xn5X/BqCJpddVzYI7r6dzqGen8LOrswFqbIPgItGhTFNp1CH3O Mpe2XrurLdkMrj+yZGYafzUrQAIPWWZ4bhw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1684411834; x=1684498234; bh=iEVFqtw1JqekODOotC2ub4LPeuBKuGhKreW qMPrAL0Q=; b=Zv/x/6+sMkRUvMC73mYdLzYHN4rzXW4GfNd01MeOQscqDl/GZ4H CPj5Ox738Q7jPNZvEwxKG2LuyUjlTm4WLKgqz9lyLt+BKuY+Mv97eQO9zyd8oH2E bCnJ96FozQXa3HKz5qdZyiiZdJyRvltMcm1C8VGpyTrOBp17Z8yTzUn9z17KnznF 8Q96nvAZsjChai+eND0BeBUU6Mu2rSCuejJxg3C6U4c3+YRDlaMSnvXAeFL/Gou1 Yp7chAS7HG0nkh7Ac2wiQGo2k8ADMoHlS+GyX2PW/fL9GTpGnBs5oHunIrlnOJk2 g72L30REN3tgECHiNt72hRyFgx/pv9hGKzw==
X-ME-Sender: <xms:uhVmZBhI4KHLpeTlAwLvHLiiYPAmN79iUDdbtj1gie3K4qVu36efcQ> <xme:uhVmZGBeWvv8edkOrjcRC-GB70kW01_kczjH2dx1leHVokOE4Yr7sjtrd2Z7b2nBo KeFCYRQvHfC29Tdpw>
X-ME-Received: <xmr:uhVmZBHHJG5aEWSF-B7yrtGJW_N4h2ra0zVOVnfrJtGI4kKpna0aDwrUTO0QCgx2fFg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrfeeifedggeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptggguffhjgffvefgkfhfvffosehtqhhmtdhhtddvnecuhfhrohhmpeforghr khcupfhothhtihhnghhhrghmuceomhhnohhtsehmnhhothdrnhgvtheqnecuggftrfgrth htvghrnhepfefghfduheduheelveeufeejudefkedtvdfgudejteefteehledthfehtdfh veeknecuffhomhgrihhnpehhthhtphhmvghsshgrghgvrdhithdpvgigrghmphhlvgdroh hrghdpmhhnohhtrdhnvghtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehm rghilhhfrhhomhepmhhnohhtsehmnhhothdrnhgvth
X-ME-Proxy: <xmx:uhVmZGR0EXd_P5dveP2tpnu4HLJ7A8ObP-2jNKQQMlAWXsSgdPqqgg> <xmx:uhVmZOwqdKFiuaAeuEsRAN1SeUHFKZWEjpHnNdVcu8pZhGgOaUfrjw> <xmx:uhVmZM7qfNdG3ecEqBoMmJxENWohn_Z6AtXjN0YdCzn30Dqem9PRrw> <xmx:uhVmZItZghK6v27QJRzBcpOqv_anWB0kOjbxg7KzaYGyLc3XsAGLOg>
Feedback-ID: ie6694242:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 18 May 2023 08:10:33 -0400 (EDT)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.500.231\))
From: Mark Nottingham <mnot@mnot.net>
In-Reply-To: <bf68dfe7-b57d-f127-4956-45add76e6557@gmx.de>
Date: Thu, 18 May 2023 13:10:32 +0100
Cc: Last Call <last-call@ietf.org>, Zaheduzzaman.Sarker@ericsson.com, Darrel Miller <darrel@tavis.ca>, HTTP APIs Working Group <httpapi@ietf.org>, "Salz, Rich" <rsalz@akamai.com>
Content-Transfer-Encoding: quoted-printable
Message-Id: <92AD6482-451B-4DCD-8791-B9118A77C377@mnot.net>
References: <168416137684.53124.18418941788133760608@ietfa.amsl.com> <bf68dfe7-b57d-f127-4956-45add76e6557@gmx.de>
To: "Julian F. Reschke" <julian.reschke@gmx.de>
X-Mailer: Apple Mail (2.3731.500.231)
Archived-At: <https://mailarchive.ietf.org/arch/msg/last-call/D3a5ZEtr8tZcg5de5ZEZ2D33oHk>
Subject: Re: [Last-Call] [httpapi] Last Call: <draft-ietf-httpapi-link-template-02.txt> (The Link-Template HTTP Header Field) to Proposed Standard
X-BeenThere: last-call@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: IETF Last Calls <last-call.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/last-call>, <mailto:last-call-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/last-call/>
List-Post: <mailto:last-call@ietf.org>
List-Help: <mailto:last-call-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/last-call>, <mailto:last-call-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 18 May 2023 12:10:41 -0000

Hi Julian,

> On 17 May 2023, at 1:22 pm, Julian Reschke <julian.reschke@gmx.de> wrote:
> 
> Hi there,
> 
> below some feedback... (and sorry for not paying attention earlier in WGLC).
> 
> 1. Introduction
> 
> > This specification defines a HTTP header field [HTTP] for conveying
> templates for links in the headers of a HTTP message. It is
> complimentary to the Link header field defined in Section 3 of
> [WEB-LINKING], which carries links directly.
> 
> Is use in a trailer completely implausible?

No, but Link is defined as a header, and there haven't been requests to make it available as a trailer. While we could allow both, it would require applications using Link to disambiguate whether it's supported in trailers in their particular case, and we know that many applications won't bother.


> 2. The Link-Template Header Field
> 
> > Link-Template: "/{username}"; rel="https://example.org/rel/user"
> 
> It took me a moment to realize that rel uses a URI, not a registered
> link relation. That's IMHO "advanced" use of link relations, so maybe
> not totally suitable for the first example.

Fair call; updated in source.


> > Parameters on a templated link have identical semantics to those of a
> Link header field. This includes (but is not limited to) the use of the
> "rel" parameter to convey the relation type, the "anchor" parameter to
> modify the context IRI, and so on. Parameter values MUST be Strings.
> 
> Why are parameters limited to strings; just for consistency with "Link"?
> Anyway, RFC 8288 defines "title*", and the "Display Strings" that we may
> or may not get in SFBIS could be used here. I would prefer to wait for
> the outcome of that discussion before proceeding here.

I tend to agree; let's see what happens. Note that display strings are not functionally equivalent to that encoding -- so we'll have to figure out whether that's important.


> > Link-Template: </books/{book_id}/author>;
>               rel="author" anchor="#{book_id}"
> 
> This needs to use DQUOTE instead of angle brackets.

Fixed.


> > Implementations MUST support all levels of template defined by
> [URI-TEMPLATE] in both the rel and anchor parameters.
> 
> In *rel*? So use an URI template for the actual link relation??? What's
> the use case for that?

Ah -- that's a typo; the intent was the link and the anchor, not rel. Fixed (and good catch).


> 2.1 var-base
> 
> This mechanism assumes that all variables come from the same base. Is
> that assumption justified? (Not sure myself)

Possibly not, but this is very anticipatory, so a simple mechanism seemed best.


> 4. IANA Considerations
> 
> I'd make that a proper list instead of artwork (yes, nitpicking here)

Sure.


> 5. Normative References
> 
> [HTTP] should use RFC 9110.

Done - we started working on this one a while back :)

Cheers and thanks for the review,


--
Mark Nottingham   https://www.mnot.net/