Dave: Whilst I agree that URL parameters should be maintained as separate from the payload parameters there are also situations where “special” url params are used in place of other, more RESTful best practice. For example, many APIs offer an action parameter to support clients that can’t PUT / DELETE (i.e. most web browsers) whilst others use a section of the URL to determine the response type of the resource.

And on that topic, the example is actually correct in that “Content-Type” should be used to determine the format of the *incoming* data. Accepts is used for the response format and the two can be completely different as required.

Finally, yes there are load of projects that already do REST / HTTP APIs but sometimes it’s very useful to look at the underlying technology from scratch. Not great for production use but brilliant for learning a technology.