设置 WebAPI 路由
Setting WebAPI routing
在 WebApiConfig
我已经添加到路线 :
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在 ApiController 中,我有 2 个 GET
操作:
[HttpGet]
public async Task<IEnumerable<RequestModel>> Pending(){}
[HttpGet]
public async Task<IEnumerable<RequestModel>> Resolved()
当我尝试从 AngularJS 服务调用此操作之一时,出现 500 错误。
Multiple actions were found that match the request
当我只留下第二条路线时,它与我的行动相匹配 - 它运作良好。
"/api/v1/RequestRecipient/Pending"
如果有 2 条路线,会出现什么问题?
经过一番研究,我找到了解决方案 - 只需更改路线顺序即可。
发件人:
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
收件人:
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
但我也发现了一些人的意见,即拥有 Action 和 Non-Action 路线并不是一个好主意。
在 WebApiConfig
我已经添加到路线 :
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在 ApiController 中,我有 2 个 GET
操作:
[HttpGet]
public async Task<IEnumerable<RequestModel>> Pending(){}
[HttpGet]
public async Task<IEnumerable<RequestModel>> Resolved()
当我尝试从 AngularJS 服务调用此操作之一时,出现 500 错误。
Multiple actions were found that match the request
当我只留下第二条路线时,它与我的行动相匹配 - 它运作良好。
"/api/v1/RequestRecipient/Pending"
如果有 2 条路线,会出现什么问题?
经过一番研究,我找到了解决方案 - 只需更改路线顺序即可。
发件人:
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
收件人:
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
但我也发现了一些人的意见,即拥有 Action 和 Non-Action 路线并不是一个好主意。