<div dir="ltr">On Wed, Oct 16, 2013 at 6:56 PM, David M. Lee <span dir="ltr"><<a href="mailto:dlee@digium.com" target="_blank">dlee@digium.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div class="im"><br><div><div>On Oct 15, 2013, at 6:30 PM, Daniel Jenkins <<a href="mailto:dan.jenkins88@gmail.com" target="_blank">dan.jenkins88@gmail.com</a>> wrote:</div><br><blockquote type="cite">
<div class="gmail_extra" style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
I know Mr Lee said that he didn't go full on HATEAOS style, but your verbs are meant to be your GET, POST, PUT and DELETE methods and so the fact you're doing a post means create and the fact you're doing PUT means you're adding...</div>
<div class="gmail_extra" style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<br></div><div class="gmail_extra" style="font-family:Helvetica;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
Is this a rabbit hole we want to go down? I just don't like routes that contain verbs, it feels messy to me.</div></blockquote></div><div><br></div></div><div>I agree that it's messy, but I decided to make some compromises for the sake of readability and usability. We avoid verbs when we can, but there are cases where it's just not practical.</div>
<div><br></div><div>Here was the process I went through designing the /bridges API.</div><div><br></div><div>Channels can exist without bridges, so it's better if there are no bridge related operations on the channel. That avoids a cyclic dependency between bridges and channels.</div>
<div><br></div><div>Here was my first thought:</div><div><br></div><div>POST /bridges/{bridgeId}/channels/{channelId} - add a channel to a bridge</div><div>DELETE /bridges/{bridgeId}/channels/{channelId} - remove a channel from a bridge</div>
<div><br></div><div>That's okay, but you've lost the ability for bulk operations. So now you'll want to post to the /channels resource itself. Without putting verbs in the route, you're left with this:</div>
<div><br></div><div>PUT /bridges/{bridgeId}/channels ["channelId", …] - update the channel list</div><div><br></div><div>(Look, Dan. I used a PUT :-D)</div></div></blockquote><div><br></div><div>:D :D</div><div>
 </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><br></div><div>Okay, now we can update the list of channels that are in the bridge. But this has its own problems. What if other channels are being added to the bridge concurrently? Now you have the danger of write conflicts causing changes to be lost.</div>
<div><br></div><div>That's a problem that could be solved, by adding a version number to the resource and doing optimistic locking, but now the application developer has to deal with 409 Conflict failures when the channel list is updated concurrently.</div>
<div><br></div><div>I always came around to having /addChannels and /removeChannels routes just to make the API usable. Since we had to have them anyways, I didn't see the point of having the 'clean' version, too.</div>
</div></blockquote><div><br></div><div>That's cool, if it makes sense in this context, I'm cool with it</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div><br></div><div>
<div style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-wrap:break-word;word-spacing:0px">
-- <br>David M. Lee<br>Digium, Inc. | Software Developer<div class="im"><br>445 Jan Davis Drive NW - Huntsville, AL 35806 - USA<br></div>Check us out at:  <a href="http://www.digium.com" target="_blank">www.digium.com</a>  & <a href="http://www.asterisk.org" target="_blank">www.asterisk.org</a></div>

</div>
<br></div><br>_______________________________________________<br>
asterisk-app-dev mailing list<br>
<a href="mailto:asterisk-app-dev@lists.digium.com">asterisk-app-dev@lists.digium.com</a><br>
<a href="http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev" target="_blank">http://lists.digium.com/cgi-bin/mailman/listinfo/asterisk-app-dev</a><br>
<br></blockquote></div><br></div></div>