<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">This doesn't fit into the "things that make me grumpy" bucket, but instead an opinion on how APIs should be done…<div><br></div><div>I personally believe (and this is described in great detail in my API book) that you never, ever auto-generate JSON and XML from model objects for your REST APIs. You need your models to be free to evolve independent from the API representation.</div><div><br></div><div>If you take that step, you can make your XML and JSON independent be first-class citizens. There are other ways as well, but that's my recommended approach.</div><div><br></div><div>It's really not that hard. As I've said in a couple of other emails, the enStratus API supports both XML and JSON and maintaining that support without auto-generated output that supports schema changes across versions just isn't that hard. It's definitely not where we spend our maintenance time on the APIs.</div><div><br></div><div>-George</div><div><br><div><div>On Aug 10, 2012, at 8:14 AM, Gabe Westmaas <<a href="mailto:gabe.westmaas@rackspace.com">gabe.westmaas@rackspace.com</a>> wrote:</div><blockquote type="cite"><blockquote type="cite"><br></blockquote><br>The biggest problem with this is that either json or XML ends up feeling second class. </blockquote></div><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">--<br>George Reese - Chief Technology Officer, enStratus<br>e: <a href="mailto:george.reese@enstratus.com">george.reese@enstratus.com</a>    Skype: nspollution    t: @GeorgeReese    p: +1.207.956.0217<br>enStratus: Enterprise Cloud Management - @enStratus - <a href="http://www.enstratus.com/">http://www.enstratus.com</a><br>To schedule a meeting with me: <a href="http://tungle.me/GeorgeReese">http://tungle.me/GeorgeReese</a></div></span></span>
</div>
<br></div></body></html>