我试图将路线参数和uri参数结合起来。我试过了
config.Routes.MapHttpRoute(
name: "CqsAPi",
routeTemplate: "api/{controller}/{type}/{id}",
defaults: new { id = RouteParameter.Optional }
);
和控制器
public class CqsController : ApiController
{
public object Get(string type, [FromUri] Data data)
{
var dto = var ParseDto<Query>(type, data);
return _invoke.Query(dto);
}
}
但是我得到了
@Patrick Hofman 像这样?得到同样的错误控制器上未找到任何操作&#39; Cqs&#39;与请求匹配。
config.Routes.MapHttpRoute(
name: "CqsAPi",
routeTemplate: "api/{controller}/{type}/{data}"
);
这是有效的
config.Routes.MapHttpRoute(
name: "CqsAPi",
routeTemplate: "api/{controller}/{type}/{data}",
defaults: new { type = RouteParameter.Optional, data = RouteParameter.Optional }
);
Bummer 它没有用,这就是我想做的事。
地址 / API / CQS / FooQuery /?ID = 1
动作方法现在看起来像这样
public object Get(string type, [FromUri] JObject data)
{
var t = typeof(Query).Assembly.GetType(type);
var query = data.ToObject(t) as Query;
return _invoker.Invoke(query);
}
FooQuery
public class FooQuery : Query<IEnumerable<Foo>>
{
public int Id { get; set; }
}
现在问题是未设置Id