如何使用具有不同参数类型的相同路由?
How to use the same route with different parameter types?
我有一个 Api 控制器,它有两个采用不同参数类型的不同操作。
// GET: users/sample%40email.com
[Route("users/{emailAddress}")]
public IHttpActionResult GetUser(string emailAddress)
// GET: users/1D8F6B90-9BD9-4CDD-BABB-372242AD9960
[Route("users/{reference}")]
public IHttpActionResult GetUserByReference(Guid reference)
问题是当我向其中任何一个发出请求时,发现多个操作匹配。查看其他答案,我认为我需要像这样在 WebApiConfig 中设置路由...
config.Routes.MapHttpRoute(
name: "apiEmail",
routeTemplate: "api/{controller}/{action}/{email}"
);
config.Routes.MapHttpRoute(
name: "apiReference",
routeTemplate: "api/{controller}/{action}/{reference}"
);
我需要做什么才能根据传入的参数类型调用每个动作?
我对 Web.Api 很陌生,如有任何额外的解释文字,我们将不胜感激。
您喜欢以下启用属性路由的方法声明:
//用guid 1st
声明方法
// GET: users/1D8F6B90-9BD9-4CDD-BABB-372242AD9960
[Route("users/{reference:guid}")]
public IHttpActionResult GetUserByReference(Guid reference)
并像下面这样声明其他方法
// GET: users/sample%40email.com
[Route("users/{emailAddress}")]
public IHttpActionResult GetUser(string emailAddress)
请告诉我,这适合你吗?
我有一个 Api 控制器,它有两个采用不同参数类型的不同操作。
// GET: users/sample%40email.com
[Route("users/{emailAddress}")]
public IHttpActionResult GetUser(string emailAddress)
// GET: users/1D8F6B90-9BD9-4CDD-BABB-372242AD9960
[Route("users/{reference}")]
public IHttpActionResult GetUserByReference(Guid reference)
问题是当我向其中任何一个发出请求时,发现多个操作匹配。查看其他答案,我认为我需要像这样在 WebApiConfig 中设置路由...
config.Routes.MapHttpRoute(
name: "apiEmail",
routeTemplate: "api/{controller}/{action}/{email}"
);
config.Routes.MapHttpRoute(
name: "apiReference",
routeTemplate: "api/{controller}/{action}/{reference}"
);
我需要做什么才能根据传入的参数类型调用每个动作?
我对 Web.Api 很陌生,如有任何额外的解释文字,我们将不胜感激。
您喜欢以下启用属性路由的方法声明: //用guid 1st
声明方法// GET: users/1D8F6B90-9BD9-4CDD-BABB-372242AD9960
[Route("users/{reference:guid}")]
public IHttpActionResult GetUserByReference(Guid reference)
并像下面这样声明其他方法
// GET: users/sample%40email.com
[Route("users/{emailAddress}")]
public IHttpActionResult GetUser(string emailAddress)
请告诉我,这适合你吗?