[英]Asp.Net WebApi Routing
我有路由通用控制器方法的問題。 我有這樣的控制器類。
public abstract class ModelsController<T> : ApiController where T : IModel
{
[GET("GetByName/{name:string}")]
public T GetByName(string name)
{
return repository.GetByName(name);
}
}
[RoutePrefix("Events")]
public class EventsController : ModelsController<IEventModel> { }
我想在 url 上有 api 方法
GET ~/api/public/Photos/GetByName/{name}
但網址是
GET ~/api/public/Photos?name={name}
我有什么錯? 像這樣進行路由的正確方法是什么?
使用[Route]
屬性:
[HttpGet]
[Route("GetByName/{name:string}")]
public T GetByName(string name)
{
return repository.GetByName(name);
}
WebApiConfig 中是否啟用了基於屬性的路由?
根據 Web API 2.2 文檔,您需要以下配置:
config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
public class CustomDirectRouteProvider : DefaultDirectRouteProvider
{
protected override IReadOnlyList
GetActionRouteFactories(HttpActionDescriptor actionDescriptor)
{
return actionDescriptor.GetCustomAttributes
(inherit: true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.