[Catalyst] API Versioning for Web Services
Matt S Trout
dbix-class at trout.me.uk
Mon Jul 28 21:43:09 BST 2008
On Sun, Jul 27, 2008 at 09:09:46AM -0700, Bill Moseley wrote:
> On Sat, Jul 26, 2008 at 06:00:39AM +0100, Matt S Trout wrote:
> >
> > sub widget :Local VersionedXMLRPC('widget.get') {
> >
> > sub widget_xmlrpc_v1 {
> >
> > have VersionedXMLRPC apply a custom a ction class that does ->can
> > based dispatch, same way Catalyst::Action::REST does.
>
> C::Action::REST uses "ActionClass('REST')" to specify the class for
> the action. And with a custom request class, has a custom dispatcher to
> dispatch based on the request method.
>
> Your example above does not use ActionClass. Were you suggesting that
> these XMLRPC actions have their own action class, and if so how would
> the actions be setup then?
My example suggests you write _parse_VersionedXMLRPC_attr to apply
the action class etc.
> By the way, my assumption is I would have the entire XMLRPC API
> versioned. I asked about this on the XMLRPC list and it was
> recommended that instead I version individual methods. That is, have
> separate method names that include a version:
>
> widget.1.get
> widget.2.get
> etc.
>
> which would make the Catalyst part very simple, but I'm not sure I
> like that idea of each method having a version in the method name.
I'd suggest a header, really. X-MyApp-XMLRPC-Api-Version: or similar.
Makes the versioning stuff optional, thus simplifying the simple case.
--
Matt S Trout Need help with your Catalyst or DBIx::Class project?
Technical Director http://www.shadowcat.co.uk/catalyst/
Shadowcat Systems Ltd. Want a managed development or deployment platform?
http://chainsawblues.vox.com/ http://www.shadowcat.co.uk/servers/
More information about the Catalyst
mailing list