The post Standard package Layout discusses how to layer different functionalities by wrapping the same interface.
For instance, myapp.UserCache
wraps postgres.UserService
, where both satisfy myapp.UserService` interface.
What would be a good approach to add validation and authorization (who has permission which endpoint, not to be mistaken with authentication)?
Would it be a good idea to have validation and authorization also as structures which satisfy myapp.UserService
? So it would like:
Authorization wraps validation wraps caching wraps datastore
At this point, the service interface feels like what middleware do.
One advantage of authorization satisfying myapp.UserService
is that, if it does not, then you can find out which service endpoints are not covered at compile time.
Maybe /u/benbjohnson could join this discussion too!
