My opinion is that the actual innovation is the ‘polymorphic identifiers’ they introduced in their previous paper, which is definitely worth a read as my one line description of it can’t really do it justice. It’s kind of like being able to overload the assignment operator. Once you have that kind of feature, it’s sort of a no-brainer to say ‘Hey, all I/O (variables in memory, filesystems, etc) should use the same interface’.
Here is a much longer comment on reddit where I go through Fielding's thesis and a few other writings and show that following the constraints pretty naturally leads to the outcome above: https://www.reddit.com/r/programming/comments/2oyj65/api_des...
However, the In-Process REST paper[1] has a section listing the constraints of the REST architectural style, and we actually match those constraints very well, apart from the obvious bit of not being a distributed system.
The constraints (from Fielding's dissertation) are:
1. Client Server
That one's the obvious miss, as long as you define client and server as being separate computers.
2. Stateless
If you follow the model, then any state mutation is done via the "verbs", so yes. No more or less enforceable by the mechanism than in real REST.
3. Cacheable
Yes.
4. Layered System
See Storage Combinators. Yes.
5. Codee on demand (optional)
Doesn't make sense, so no. Optional, so no big deal.
6. Uniform Interface
This is the one with the URIs and verbs, so yes.
HATEOS was at least partially adhered to in the system we built, but again not enforceable by the model and also widely not adhered to in the wild.
[1] https://link.springer.com/chapter/10.1007%2F978-1-4614-9299-...