Conductor API and to_xml
Petr Blaho
pblaho at redhat.com
Mon Jul 23 13:59:47 UTC 2012
On Friday, July 20, 2012 03:57:55 PM Martyn Taylor wrote:
> Hi gents,
>
> There has been a few people raising similar questions around why are we
> not using the default rails renders and instead are using templates to
> render such things as xml. I've put together my reasoning on choosing
> this approach below:
>
> I assume most people are aware that render :xml simply using a models
> to_xml method to parse the model.
>
> There are a few issues with to_xml.
>
> 1) to_xml uses elements for everything. In our API we use attributes
> for special fields on our resources. These special fields are used to
> identify the resource and give its location. i.e. href and id.
>
> We could extend to_xml to handle this for us. But there are some other
> issues.
To render href we need url helpers too... and these really do not belongs into the model.
>
> 2) When returning lists and nested resources. For example:
>
> <provider>
> <provider_account />
> </provider>
>
> or
>
> <providers>
> <provider id='1' href='' />
> <provider id='2' href='' />
> </providers>
>
> We do not want to return the full resource just a reference to it. This
> is to reduce the size of response body. to_xml will simply call to_xml
> on nested resources resulting in full resource representation.
>
> 3) When rendering resources we only want to list its direct children,
> not grandchildren. This is again to avoid sending whole object graphs
> in response bodies. Using to_xml will result in every resource in the
> graph being rendered.
>
> 4) Templates are much more flexible.
>
> All of the issues I described above could be implemented by overriding
> the to_xml method. Though it would get a little complicated.
>
> Templates are much easier to maintain and update. In addition, using
> templates gives us more control on what we return on a individual model
> basis. For example we could have logic in our templates that say things
> like.
>
> If STATUS == "Complete" then #don't return progress. etc....
>
> To summarize. Yes you can use to_xml which is the standard way to
> render things like xml, json in rails. But there is a significant
> amount of work in implementing bespoke methods to make it work the way
> we need it to. Templates are much more flexible and are easier to
> implement. The downside of templates is that we have more files to
> maintain. But there is nothing complicated about templates they are
> extremely trivial.
>
>
>
>
>
>
--
With regards
Petr Blaho
More information about the aeolus-devel
mailing list