REST has been the long-reigning king in the realm of web application architecture. It provides a comprehensive set of rules and constraints that can deliver fully functioning web services. However, those rules and constraints can quickly become problematic as well.
Using REST to its full potential requires an extremely high level of familiarity with its complexities, which is just not feasible for every developer. This has given rise to “so-called REST” APIs which do not actually conform with RESTful rules.