I’m not clear on what the real problems are with the author’s REST-ish example. He complains that he’s adding non-email fields to his email model, which is correct: there should be a model containing the email (or a reference to it) that is being modified. His other concern is that now the server has to detect state changes and respond to them, but that’s more or less the whole idea here. If responding to state change is bad a priori, then I’m not sure where one would go but to RPC ALL THE THINGS.
I wouldn’t want to encourage a “one-size-fits-all” mentality, but there is a whole lot more half-assed internal custom APIs (or protocols) than there are ones where someone laid out a high quality alternative architecture that matched the domain. In fewer words, not using REST (or whatever) is fine, but swap it for another well thought out architecture (even your own), not something ad-hoc.
It seemed like all the author was saying is “I don’t like REST because lots of people argue about REST, and there are some hacks involved in the Rails implementation of REST”.
I’m also not sure the author understands that “state” has a specific meaning, and it isn’t the same as the status messages he want to attach to emails.
Actually this tendency to transform arbitrary decisions into moral categories and then hang them as a millstone around the neck of others is a much broader phenomena.
Does this actually describe the way that anybody evangelises REST?
I think that the application ought to drive the discussion about architecture. If REST works for you application, then by all means use it, but if it doesn’t don’t be afraid to use something else.
I don’t think anybody disagrees with this.
That’s a fair question. All I have is anecdotal evidence from my own experience… I did point to that clean URL blog post, but maybe I should’ve spent more time finding examples.
Lot’s of developers are afraid to try something different. Read pashields above.
That blog post has nothing to do with REST. Whether a system has user-friendly URLs or a big mess of UUIDs doesn’t tell you anything about how RESTful it is.
pashields seems to be in agreement with you:
In fewer words, not using REST (or whatever) is fine, but swap it for another well thought out architecture (even your own), not something ad-hoc.
It’s an example of making a big deal out of something that doesn’t matter.