snaplet-rest
REST resources for the Snap framework.
As an example, let's translate the following datatype into a resource.
We need a type to represent changes to the resource. This partial type
indicates what properties to change: either the name, the age, or both.
This type also acts as a search mechanism: we can search by names, ages, or
both. We can use either a username or a UserPart search to find users, and
define a function to convert URL query string parameters to this search.
Now we have the pieces required to define our CRUD behaviour.
If we've implemented Aeson instances, we can add JSON as a media format
without having to define these manually. Once the behaviour is attached to
the resource, it can be served in the handler.