Re: How much REST should your Web API get?
Jérôme Louvel <[email protected]> Fri, 3 May 2013 13:46:18 +0200
| Newsgroups | gmane.comp.web.services.rest |
|---|---|
| Message-ID | <CAOsY8mRTuboGnzh0syhkMtjifQsz0ZJ4aLA-nzJHqL0eeuE4bw@mail.gmail.com> |
Great, I've added some of those references to the wiki: https://github.com/restlet/web-api-style/wiki/References Would you be interested to contribute directly to the GitHub project? Best regards, Jerome 2013/5/2 mike amundsen <[email protected]> > just jumping in here: > > - CoAP[1] is a UDP-based protocol for small devices (sensors, etc.) that > has support for hypermedia [2]. > > Modifiability > As for handling "co-ordination" for releases/changes between client and > server, IME, this boils down to a desire for the system to support > safe modifiabilty. > > - Erlang solved this problem using language constructs and a supervisor > model. > - Years ago (too long...) I worked on Intra-net implementations that > relied on shipping sandboxed code for client-side execution. We called it > "scriptable clients" and this was all before "browser" was a thing<g>. > - Gmail is one big pile of portable code that auto-installs as needed and > carries all the new funftionality > - I've worked in systems where the entire system was a ball of > configuration settings. new features were released via configuration only. > bear to manage each config, but quite reliable. > > the above all all examples of "co-ordination" of release/updates w/o a > dependence on hypermedia. > > If you focus on the properties you need instead of the techniques you use, > you find there are many, many ways to reach your goal. > > [1] http://tools.ietf.org/html/draft-ietf-core-coap-16 > [2] http://tools.ietf.org/html/rfc6690 > > Oh yeah, the Taylor link... http://www.ics.uci.edu/~taylor/ > > > mamund > +1.859.757.1449 > skype: mca.amundsen > http://amundsen.com/blog/ > http://twitter.com/mamund > https://github.com/mamund > http://www.linkedin.com/in/mikeamundsen > > > On Thu, May 2, 2013 at 2:34 PM, Jan Algermissen < > [email protected]> wrote: > >> >> On 02.05.2013, at 19:48, Jérôme Louvel <[email protected]> wrote: >> >> > >> > Jan, >> > >> > I remain a strong proponent of the idea that it is more fruitful to aim >> at rethinking the problem to fit a sound paradigm rather than to blame the >> paradigm for not fitting the problem (one's perceived view of it, that is). >> > >> > But when the paradigm isn't intended to solve a given problem, do you >> think we should force the problem to fit into the paradigm? >> >> No, certainly not. What I am arguing against is what I experience so >> often: That people claim some paradigm is a bad fit for a problem instead >> of thinking thoroughly through the problem until they can make an educated >> choice. >> >> > >> > REST was never designed to solve all software architecture problems. >> That's quite the opposite and what makes it so powerful to scale the web of >> hypermedia documents. >> >> What does that mean: "and what makes it so powerful to scale the web of >> hypermedia documents"? >> >> > >> > Two concrete points: >> > >> > I don't buy the efficiency argument regarding discovery and granularity >> of messages - unless you ignore caching and the possibility to tailor >> representations for specific devices. >> > >> > You could also add HTTP compression to the mix. I'm a fan of HTTP >> caching and content negotiation as well. The "Web API" style proposed fully >> leverages those features. >> >> It just not as simple as taking half of REST and getting half the >> benefits. REST works as a whole, not in 'layers' or 'levels'. >> >> > >> > You write about the 'Web API style' "requires coordination between >> clients and servers when changes are deployed" - doh... this eliminates >> *the* (**the**) primary benefit to apply REST. >> > >> > Exactly, but if you ship a native mobile app or a connected hardware >> device with no hypermedia capability at all (think about a dumb sensor), >> >> Now, there is quite a difference between a sensor and a mobile app. Who >> says a mobile app cannot have hypermedia capabilities? And who would make a >> sensor a REST client? I'd rather have the sensor send measurement data via, >> e.g. UDP. >> >> > you definitely need to coordinate the clients and servers even though >> you are fully and properly using HTTP. >> >> Hmm, can you be more specific about what you mean here? >> >> > This is why the vast majority of so-called web APIs are versionned and >> based on stable URIs and representations structures. They can't always >> afford to dynamically discover the user interface. >> >> I'd say, the vast majority of Web APIs fails to be RESTful because people >> simply did not follow the style. Show me a single example that has been >> deliberately designed unRESTful on the basis of design principles. To me >> this is just the same old discussion over and over again: People make a >> (rather unedcuated) claim, mistake that for truth and come up with >> suboptimal design. >> >> And that is not only true for wanna be REST services, unfortunately it is >> an all too common way to approach all sorts of IT problems. >> >> In my experience, people learn best if we do not settle for 'premature >> agreement' but use, for example, a style to foster more flexible thinking. >> Usually, whoever endures that process is thankful in the end. >> >> > >> > You could say that native apps aren't needed and could be re-developped >> as HTML 5 apps, but this isn't always possible or desirable. >> >> Either way, a native app makes a perfectly RESTful client if you design >> it that way. Personally, I'd go a very long way to maintain the benefit of >> not having to coordinate client deployment with API changes.... >> >> >> > >> > Aside from systems that focus on sending fine grained control messages >> around in (near) realtime, I have yet to see a case where REST does not >> shine due to performance, scalability and the ability to decentralize >> management of the deployment and release cycles. >> > >> > Again, my point is to take the best of what REST brings but not try to >> apply it in cases where a rich hypermedia client is available, >> >> What is a "rich hypermedia client"? Can you be more specific about the >> situation that seems to be the root cause for the perceived need that you >> have to change the style? >> >> > but isn't so uncommon. I'm just trying to do REST justice otherwise >> we'll get a backslash when people finally realize that the vast majority of >> REST endpoints/APIs/etc. can't be used in a dynamic way like HTML is used >> by web browsers. >> >> Can you explain what you mean by "a dynamic way like HTML is used by web >> browsers"? >> >> >> To me it remains unclear what the problem is you are trying to solve. >> Please explain, I'm all ears. >> >> >> Jan >> >> >> >> >> > >> > Best regards, >> > Jerome >> > >> > >> > >> >> >> >> ------------------------------------ >> >> Yahoo! Groups Links >> >> >> >> >