This otherwise excellent article fails my ETag test.
When Sam speaks, I listen, so I’ve given his feedback a lot of thought.
As I wrote in a comment on Sam’s blog, the Erlang/Yaws RESTful services I work on do indeed support conditional GETs, so at least my day-to-day work passes his ETags test. As for the article, there are two ways to think about it:
If you focus on the “RESTful Design” portion of the article, then yes, I could have added a “think about where you need to support conditional GETs” item to the “key areas to pay attention to” list.
If you focus on the Yaws/Erlang aspect of the article, then keep in mind that dealing with ETags requires dealing with HTTP headers such as
ETagheader itself. The article already shows you how to read request headers and write reply headers, though, and how you actually create specific ETag values for use in the headers depends on the particulars of your resources — Leonard Richardson’s and Sam’s excellent book already covers this pretty well.
I intended the focus of the article to be more about item 2 than item 1, so I think not specifically addressing ETags is OK.
One thing I should have included, though, is how to parse
POST data. You use the
yaws_api:parse_post/1 function for that, passing in an
arg record. For typical form data, it’ll give you back a list of key/value pairs over which you can iterate, or from which you can extract expected key/value pairs using
yaws_api:postvar/2 (or even
lists:keysearch/3, if you like). See the documentation at the Yaws website for more details, but all in all, handling
POST data in Yaws is fairly trivial.