[rest-practices] Links for actions

Mark McLoughlin markmc at redhat.com
Thu May 27 10:14:39 UTC 2010


Hi David,

On Wed, 2010-05-12 at 10:23 +0100, Mark McLoughlin wrote: 
> On Thu, 2010-05-06 at 16:46 -0700, David Lutterkort wrote:
> > One more issue from Deltacloud Core: right now, when a client gets the
> > details about an instance, we indicate the possible actions on that
> > instance like this:
> > 
> >         <actions>
> >           <link href="/api/instances/inst1/reboot" rel="reboot"/>
> >           <link href="/api/instances/inst1/stop" rel="stop"/>
> >           <link href="/api/instances/inst1" rel="destroy"/>
> >         </actions>
> >         
> > The above leaves the client guessing what method to use on the actions,
> > and contains a little trap: for almost all actions, the method to use is
> > POST, but for destroy, the client should use the DELETE method, since
> > they are deleting the server side instance.
> > 
> > You could argue that this issue is caused by using URL's that do not
> > represent resources; but then I don't know a better way to indicate
> > actions.
> 
> The idea is that an action *is* a resource - POST is creating an
> instance of it
> 
> > My favored way out of this is to add the method the client should use to
> > the <link/> tag, e.g.
> > 
> >         <link href="/api/instances/inst1" rel="destroy" method="post"/>
> 
> ITYM:
> 
>   <link href="/api/instances/inst1" rel="destroy" method="delete"/>
> 
> > Any thoughts on this ?
> 
> I don't think "destroy" is an action like the others
> 
> To me, it's as implicit that DELETE destroys an instance as it is that
> POST creates an instance e.g. you're not adding:
> 
>   <instances>
>     <actions>
>       <link href="/api/instances" rel="create" method="post"/>
>     </actions>
>     ...
>   </instances>
> 
> So, IMHO, drop the "destroy" action and have docs like:
> 
>   https://fedorahosted.org/rhevm-api/wiki/CommonIdiomsForResources

Any more thoughts?

Given that the use of GET, POST and PUT is implied, I guess I just don't
understand what's special about DELETE that we'd have a <link> to
describe it

Btw, I've added a section to the style guide:

  https://fedoraproject.org/wiki/Cloud_APIs_REST_Style_Guide#CRUD

Cheers,
Mark.




More information about the rest-practices mailing list