[Catalyst] In search of RESTful CRUD holy grail

Bruce Keeler bruce at drangle.com
Wed Mar 4 18:30:47 GMT 2009


On 3/4/2009 4:45 AM, Moritz Onken wrote:
> Furthermore I would not put the form rendering in the same path as the
> REST interface.
This is my preference too.  Keep the browser stuff out of the REST api.
>
> I would do something like this:
>
>
>    # POST         /foo                -> create new record
>    # GET          /foo                -> list all records
>    # PUT          /foo/<pk>           -> update record
>    # DELETE       /foo/<pk>           -> delete record
>    # GET          /foo/<pk>           -> view record
>    # GET          /form/foo/<pk>      -> edit record form
>    # GET          /form/foo           -> create record form
>
> So now, what do we do with errors and redisplay of forms.
> I would say a form should post / put / delete to the rest api.
> Within that controller we can easily see if a browser is requesting
> this url or a web service (see ForBrowser's looks_like_browser()).
> If it's a browser we can detach to the /form/foo controller.
> Otherwise we show the errors in the format of the Accept header.
>
I don't like this, however.  If your UI is all AJAXy, by all means let 
it use the REST api directly.  But for old-school HTML forms, I'd post 
to the /form/foo or /form/foo/<pk> and let that controller either call 
the REST api internally, or bypass it altogether.

Bruce



More information about the Catalyst mailing list