Lumping vs. Splitting (REST)

Hi Everyone,

Working on a REST-based web application, and I need some ammo in
dealing with my supervisors and contractors.

Is it better to:

Method 1:
Take in one large XML-based POST request, which contains 1st, 2nd
and 3rd level elements, and build the associated child and grandchild
objects in the parent controller,

Method 2:
Instead use a number of smaller XML-based POST requests targeted at
the appropriate child resources?

In this example, we have Routes, Stops and Visitors.

Using Method 1, the POST request would be aimed at the Routes
controller, and the routes controller would parse the XML and build
the stops and the visitors records. Using Method 2, each prior node
of the XML document would make up a separate request, so there would
be POST request against the routes controller, then for each route a
series of POST requests against the Stops controller, and finally for
each stop, a series of POST requests against the visitors controller.

From a development standpoint, I’m inclined to go for Method 2, but
I’m facing some resistance. Can anyone offer some decent arguments
in support in favor of Method 2? Or, if I’m wrong and Method 1 is
the way to go, offer decent arguments in favor of Method 1 so that I
understand where I’m confused?

Thanks!

-Jared

If you are thinking of implementing UD for the second level models,
then method 2 definitely makes sense (ie, since you’re coding UD,
then C would likely belong there as well). R might be reserved for
the high level if it is the primary point of contact.

Hopefully of some help.

Jodi

On 12/22/06, Jared H. [email protected] wrote:

be POST request against the routes controller, then for each route a
series of POST requests against the Stops controller, and finally for
each stop, a series of POST requests against the visitors controller.

From a development standpoint, I’m inclined to go for Method 2, but
I’m facing some resistance. Can anyone offer some decent arguments
in support in favor of Method 2? Or, if I’m wrong and Method 1 is
the way to go, offer decent arguments in favor of Method 1 so that I
understand where I’m confused?

Hi Jared. I find it easier to build and test such an API using method
2.

Once you have things working and well-tested, you can create aggregate
resources in the next iteration of your project.

If you’re wrapping the API with a client library like Active Resource,
the
difference in REST style will be transparent to the user anyway.

jeremy

i like method 2, i would design things from that perspective, once all
is tested and functional build method 1 as a convenience method that
parses the entire xml doc and delegates each task to the appropriate
part of method 2 you have already built.

if the supervisors/contractors are non-technical, they are probably
thinking that one request doing the entire task is easier for whomever
is going to consume this service. Explain to them the benefits from the
end users perspective of a design around method 2.