In general I prefer routes based versioning as a user since it is very clear as a caller what I'm using.  Headers always feel so secondary and require non-obvious ways to utilize them to get the correct version.  I really do like the approach outlined in Eric's link.