Если ваш сложный объект определен сервером, вы можете смоделировать привязку к нему через URI и указать точки в свойствах в шаблоне маршрутизации. Мой совет - сохранить эту модель на одном уровне свойств. Вы можете связываться с более сложными объектами, но вы быстро обнаружите, что вам нужно написать собственное связующее для моделей.
Обратите внимание, что декоратор вашего аргумента нужно будет изменить на [FromUri], чтобы связать сложный объект через Uri. Серверы не обязаны поддерживать тела GET, и большинство из них не поддерживают.
public class CustomObject
{
public string Name { get; set; }
public string Email { get; set; }
}
[HttpGet]
[Route("{foo.Name}/{foo.Email}")]
public HttpResponseMessage Get([FromUri]CustomObject foo)
{
//...body
return Request.CreateResponse(HttpStatus.OK, foo);
}