5 ms·
I've never really seen a good explanation of why REST is a meaningful concept. Why REST? Why these requirements? What do you mean stateless? What is bad about d
by lowercase1 6y ago
I've never really seen a good explanation of why REST is a meaningful concept. Why REST? Why these requirements? What do you mean stateless? What is bad about deviating?
- dvaun 6y agoI would suggest taking a skim through Chapter 5 of Roy Fielding's dissertation[0] (where REST came from) to answer some of your questions. As for "What do you mean stateless?", read this quote from the posted article: > ...if the engine of application state (and hence the API) is not being driven by hypertext, then it cannot be RESTful and cannot be a REST API. Why does he say this? Well, he was explicit about state in his dissertation[1]: > ...each request from client to server must contain all of the information necessary to understand the request, and cannot take advantage of any stored context on the server. Session state is therefore kept entirely on the client [0]: https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arc... [1]: From Section 5.1.3 https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3 https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arc...
- gridlockd 6y agoThis doesn't answer the question as to why this is a good idea.
- dvaun 6y agoThat’s fair. I don’t have a decent explanation supporting why REST is a meaningful concept. Rather, I focused on the other questions that could be answered by the dissertation. The choice to create an API in this fashion, without RPC and other things mixed in, is up to the developer. Others have commented on this with their arguments.
- noisem4ker 6y ago>What do you mean stateless? The server doesn't keep track of the state of client sessions. Each request is handled individually. This is an advantage as memory can be saved and requests originating from any client session can be handled by any server instance.
- motogpjimbo 6y agoThat is also possible in a stateful system, simply by storing user sessions in an independent session server.
- solipsism 6y agoWhat is bad about deviating? Nothing. These concepts were developed for the web. Not APIs on the web, but HTTP itself. A vast, global, decentralized network of heterogeneous machines. Fielding's dissertation doesn't argue that REST is good for all protocols and use cases, only ones that share those qualities. From Fielding's dissertation: Some architectural styles are often portrayed as “silver bullet” solutions for all forms of software. However, a good designer should select a style that matches the needs of a particular problem being solved. Also... REST is designed to be efficient for large-grain hypermedia data transfer, optimizing for the common case of the Web, but resulting in an interface that is not optimal for other forms of architectural interaction This prescription that every API needs to have these qualities is pure cargo culting.
- rumanator 6y ago> These concepts were developed for the web. Not APIs on the web, but HTTP itself. This assertion is just plain wrong. REST is an architectural principle focused on providing APIs for web services, and Roy Fielding was quite vocal in making it extremely clear that there is nothing in REST that is HTTP-specific, let alone makes it tied to HTTP. REST is an architectural style that relied on the concept of resources, which should be linkable. That's it.