Typically, a WebAPI method might look like this;
public Project Get(int id)
{
return this.repo.GetProject(id);
}
And what we’re seeing here is a method that returns a Project object — or rather, a Project object that is later converted into a JSON object…
So it may be that you need to do a whole lot more — say, in sniffing HTTP headers for a particular purpose, or returning more interesting things in the response. So here’s how you would alter the above method;
public HttpResponseMessage Get(HttpRequestMessage request)
{
if (request.Headers[...])
...
}
And now you’re able to do anything you like with the request — you’ve got full control if you need it. It’s the ‘escape hatch’ out of the sometimes-too-helpful set of conventions. Not something for everyday, but something to use when all else fails, I think.