[Catalyst] Re: Reseting a chained action

Pedro Melo melo at simplicidade.org
Wed Aug 8 22:56:17 GMT 2007


Hi,

On Aug 8, 2007, at 1:38 PM, A. Pagaltzis wrote:

> * Pedro Melo <melo at simplicidade.org> [2007-08-07 11:20]:
>> In the course of a project I'm working on, I found it useful to
>> "reset" chained actions. It would work like this:
>>
>>   . assume that you have a chain like /company/ID/copywrongs
>>   . and in certain situations you want a alternative
>>     environment for  the chain, like this:
>>       /approve/company/ID/copywrongs
>>
>> The /approve would modify the stash to include some alternative
>> schema or environment that the rest of the chain could use to
>> tweak their behavior. The thing is, the /approve action would
>> like to tell  catalyst "ei, please disregard me and start
>> over".
>
> That doesn’t look very HTTPish. The URI should be purely the
> address of a resource, whereas you seem to be putting an
> operation in there. See also REST.

they are diferent resources, so diferent URLs. It makes total sense  
REST-wyse.

Imagine that you have some DB, that only a few people can commit, but  
several can suggest changes.

Showing a entry in that table or showing the proposed change is a  
matter of merging the delta with the actual data.

the real data sits at /dbdata/ID, a delta to be approved can sit at / 
delta/DELTA_ID/dbdata/ID

What I wanted was to reuse the last part of the chain. I think mst  
proposal will work for us, with a common base controller for the  
shared chain part.


> If you do in fact modify state on the server based on information
> in the URI, I hope that you at least require POST for these
> requests?

We always redirect after POST.

> Otherwise things like Google Web Accelerator or
> Firefox’s prefetching will badly break your app, proxy caches may
> cause heisenbugs, and all sorts of other mayhem.

I understand the dangers of not redirecting after POST :)

best regards,
-- 
Pedro Melo
Blog: http://www.simplicidade.org/notes/
XMPP ID: melo at simplicidade.org
Use XMPP!





More information about the Catalyst mailing list