Hi Assaf,

Assaf Arkin wrote:
Here's four things I learned from trying to do that, which just didn't work.
 There's more, but I think these four would be enough:

1.  Quite early into the development you realize the UI and API are
optimized for different tasks, they quickly diverge and you end up with
components that have UI and API functionality, but they don't always
overlap.  It seems like a good idea -- reuse -- but the resulting code is
unfortunately harder to maintain than keeping the two separate.

2.  If you're coming up with a new version of the API, it's generally a good
idea to place it elsewhere than the original version, so each version gets
its own resources.  If you're coming up with a new version of the UI, it's
generally a good idea to place it where the old version was, preserving as
many resources as possible.

3.  The API response to creating a new resource is 201, the UI response is
303, unless you want some JavaScript code back to render the change, in
which case it would be 200.  The URL for an API update would point to the
resource you're changing (with a PUT), but the URL for a UI update would
point to a form which will then be used to make the update.

4.  If you can request the same resource as HTML or JSON, you can imagine
using one to render a full page, and the other to just pull new data and
update existing page in-place.  Except browsers don't handle Vary, so the
second request would bring the cached HTML copy instead of the expected
JSON.

Thanks, point taken. That it very interesting! Sounds like theory and practice aren't aligned here as well :) I should spend more time with playing with code...

Cheers,
  Tammo

Reply via email to