Re: Link relation types for non-GET links

mike amundsen <mamund@yahoo.com> Sat, 15 August 2015 15:47 UTC

Return-Path: <mamund@yahoo.com>
X-Original-To: link-relations@ietfa.amsl.com
Delivered-To: link-relations@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6BFA71B2F7C for <link-relations@ietfa.amsl.com>; Sat, 15 Aug 2015 08:47:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.487
X-Spam-Level:
X-Spam-Status: No, score=-1.487 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, J_CHICKENPOX_38=0.6, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
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 HOc6WPBhw2vo for <link-relations@ietfa.amsl.com>; Sat, 15 Aug 2015 08:47:36 -0700 (PDT)
Received: from nm17-vm2.bullet.mail.ne1.yahoo.com (nm17-vm2.bullet.mail.ne1.yahoo.com [98.138.91.93]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5AF441B2F7B for <link-relations@ietf.org>; Sat, 15 Aug 2015 08:47:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1439653655; bh=VLkWOLDO2RWx7x4sbntIPPp7wvEypRAfwSazKJQ/S0c=; h=In-Reply-To:References:From:Date:Subject:To:Cc:From:Subject; b=Al+Q+gx1VbnJ95nFniu6r5HOw+h8gehybZKvPP5nnO7zynyEeAukbFstI+AjhnuyCbdmFJgoLmdQT8Ev70wr+FIMsfawCxoi0TBm1Lpb/W/fVQT1lavH6Zc5QqndHOHM0asfBl6vzuxQZV7ZTwX3Uss4B/C+Y9VApP59om0s8MGIARbiz7LCTj+/ShCNlptQQmIwICViLUHO1QBuQ1vl+LFTPVa2eou0pb0Q0bs20Mfspk1qNw98gE6VKYMZFW8SyGvoMWZAWc8CPDa4vyogzNcL3GvxdEPtyggBjV+ON6leOVh0UIYJ0TRtHIoHB9pkElpIY+PwDtAuPd5fb58Y8A==
Received: from [98.138.226.176] by nm17.bullet.mail.ne1.yahoo.com with NNFMP; 15 Aug 2015 15:47:35 -0000
Received: from [98.138.226.125] by tm11.bullet.mail.ne1.yahoo.com with NNFMP; 15 Aug 2015 15:47:35 -0000
Received: from [127.0.0.1] by smtp204.mail.ne1.yahoo.com with NNFMP; 15 Aug 2015 15:47:35 -0000
X-Yahoo-Newman-Id: 698589.29046.bm@smtp204.mail.ne1.yahoo.com
X-Yahoo-Newman-Property: ymail-3
X-YMail-OSG: 13rRBbEVM1mp_d5hM0HZUaJqbOcbwNSRrDTwHsvbR5iLi7u 2sMTxqGPwE7mPoouB0yF4D9AQVNFI..twSwCRg8lKcwXk.CDYDDu6yVRDimA _u74jTllWRYQisThLD5JUEBBYCg6IEoH.iFz44AowjAIKdX_2FOqooThBq2Q msqwDWsrXTkjLmsGKGx1Y16gzRNlYmx2SGnms4f8VhJo9ALrajCAdymo8ip9 _eejnzjheByq47Fk0DToy13k7brDGd7ZRsodeO9ejbv6.7MmLvHxNs0XF1BK pjL2l8Be8SKIj6y4Nvywph_i08MwcqGm7TW_wjM_BXzZSDLIorPcyrKvSby_ IV.Zl1B6eseGiQXUq6BmqKDS1B5HtK_CNG_2bRezoZG4PZbbiRaDK474F6vm tXBHprv1aAhS2KfTA1XiiMOFzgvGrRnyf6y6qlr4jNjaY2JXbDl8TqMPXmKm jzGglIN.EQ0phBydk40shCrnm9VmQup1WNi0rxJa1mC7i5nAvQPoc3jxpn8Y 4.kCZcXb8M65R1.wwTB9Jwqr.cpL1tQ--
X-Yahoo-SMTP: i12ABOmswBAkPG1PnjmsmmFRWA--
Received: by igbjg10 with SMTP id jg10so29950759igb.0 for <link-relations@ietf.org>; Sat, 15 Aug 2015 08:47:35 -0700 (PDT)
X-Gm-Message-State: ALoCoQkiUQNkzmz9yhY34WwNHPSfR/bAP71Wt2sOa8pLleVfmSbxl7uenlLUB01QefCEw8p36N7i
X-Received: by 10.50.143.2 with SMTP id sa2mr7044785igb.92.1439653655102; Sat, 15 Aug 2015 08:47:35 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.79.21.195 with HTTP; Sat, 15 Aug 2015 08:47:15 -0700 (PDT)
In-Reply-To: <CAAzbHvaTmB4Qf8XQR-55Eop62rHEnV18bdDOqxSq4UEMHKh-xg@mail.gmail.com>
References: <CAAzbHvb==Sn_4UUFHKs3H9GYbEfiX=TUjv4FSmNi9R4NEB+DvQ@mail.gmail.com> <CAPW_8m5CU++j=8tNBK1Q7KszxsfORnK1-6mxcgUwz9X2R2JTyA@mail.gmail.com> <CAAzbHvZGYGNOkuAkc7Fu29maDcbjSf_o54q93Xa+Ggk_fkGHAw@mail.gmail.com> <55CC8C1D.9060900@gmx.de> <CAAzbHva19zw8tzKxSxhMFUSV0RLMFjq94Pb5Z4mc8GseEgrkBw@mail.gmail.com> <55CF2EBE.5060203@gmx.de> <CAAzbHvaTmB4Qf8XQR-55Eop62rHEnV18bdDOqxSq4UEMHKh-xg@mail.gmail.com>
From: mike amundsen <mamund@yahoo.com>
Date: Sat, 15 Aug 2015 11:47:15 -0400
Message-ID: <CAPW_8m58YoAVcXo9Z48deSEuy9oo26BeS-hrcN2g=mkOCS9vDA@mail.gmail.com>
Subject: Re: Link relation types for non-GET links
To: Klaus Hartke <hartke@tzi.org>
Content-Type: multipart/alternative; boundary="001a1134b594b66ff0051d5b7c48"
Archived-At: <http://mailarchive.ietf.org/arch/msg/link-relations/KIOafsbczBXvwQI6PTdM3SajMII>
Cc: Julian Reschke <julian.reschke@gmx.de>, link-relations <link-relations@ietf.org>
X-BeenThere: link-relations@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: <link-relations.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/link-relations>, <mailto:link-relations-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/link-relations/>
List-Post: <mailto:link-relations@ietf.org>
List-Help: <mailto:link-relations-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/link-relations>, <mailto:link-relations-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 15 Aug 2015 15:47:38 -0000

Klaus:

I think an important design decision is whether you want to overload a link
rel value ("edit", "item", "collection", "payment") with protocol-level
information like "idempotent", "safe", etc. or rendering information like
"transclude", "immutable:, etc.

My advice is to keep them separate.

Your definitions in 2.4 are a bit unclear (by my reading)
_link_ promises "navigation" ("transclude=false") but does it also promise
"safe=true"?
_embedded_link_ promisses "transclude=true" but does it also promise
"safe=true"?
_templated_link_ promises "mutability" but what of safety and transclusion?
_form_ is promising "safe=false" but some are idempotent, some not.

esp. when working with automated systems, you'll need to sort this out
explicitly -- preferably inband, i suspect.

i wrote up a draft paper in 2011 that talks about these[1] "hypermedia
aspects" (safety, idempotence, mutability, and transclusion) and have a web
page that lists the most common hypermedia factors[2] (that page could use
some "love", tho <g>).  This might help you in designing a media type that
does a good job supporting a wide range of protocol-agnostic actions and
promises.

Finally, I am working on a media type design specifically aimed at
automated agents -- Uniform Basis for Exchanging Representations (UBER -- I
know...)[3] that you are free to use that for inspiration, caution, etc.

cheers



[1]
http://www.w3.org/2011/10/integration-workshop/p/hypermedia-oriented-design.pdf
[2] http://amundsen.com/hypermedia/hfactor/
[3] http://uberhypermedia.com





mamund
+1.859.757.1449
skype: mca.amundsen
http://amundsen.com/blog/
http://twitter.com/mamund
https://github.com/mamund
http://linkedin.com/in/mamund

On Sat, Aug 15, 2015 at 11:14 AM, Klaus Hartke <hartke@tzi.org> wrote:

> Julian Reschke wrote:
> > The link relation by definition can not be "unsafe".
>
> Ah, terminology. I meant to say that there are links with link
> relation types that indicate that the client should use a method other
> than GET when following the link ("non-GET link" for short). If these
> have the same syntactic form as "GET links" in a representation, and a
> spider does not know the link relation type, the spider does not know
> which method to use to follow the link. However, if they have distinct
> syntactic forms, a spider could at least follow the "GET links", even
> without understanding the link semantics in detail. This seems to be a
> useful feature.
>
> (BTW, there is a section titled "Unsafe Link Relations" in the RESTful
> Web APIs book [1].)
>
> > The link is always safe; it's the method applied to the link target which
> > might not.
>
> Maybe it's then a good idea to find better terms than "safe" and
> "unsafe" (or "GET" and "non-GET") to refer to different types of
> links. I hope we can agree that there are two types of links:
>
> - Links that cause a transition in the client-side application state
> when followed, and
> - Links that cause a transition in the server-side resource state when
> followed.
>
> I'm calling these "links" and "forms" in my draft [2], respectively,
> but I'm happy to switch to other terms if there is consensus on how
> they should be called.
>
> Klaus
>
> [1] http://restfulwebapis.com/
> [2] https://tools.ietf.org/html/draft-hartke-core-apps-01#section-2.4
>
> _______________________________________________
> link-relations mailing list
> link-relations@ietf.org
> https://www.ietf.org/mailman/listinfo/link-relations
>