So Web API assumes that GET requests will use simple types in the action method signature, and POST etc will use complex types.
GET requests by default will not bind complex types from values in the URL. To enable this, you add a special attribute:
public string Blah([FromUri]Foo model)
Then everything works as expected.