Producing RESTful applications is more of an art than a science.
There are two key objectives to bear in mind when designing a web app to be RESTful:
- your app should produce client/server interactions which complement the semantics of HTTP.
(this makes the interaction visible and helps with intermediate processing e.g. caching)
- expose your application in a way that minimizes the assumptions clients can make about it - aka 'HATEOAS'
(this will reduce risk when making changes to your application and therefore improve the evolvability of your application)
There are two key objectives to bear in mind when designing a web app to be RESTful:
- your app should produce client/server interactions which complement the semantics of HTTP. (this makes the interaction visible and helps with intermediate processing e.g. caching)
- expose your application in a way that minimizes the assumptions clients can make about it - aka 'HATEOAS' (this will reduce risk when making changes to your application and therefore improve the evolvability of your application)