我正在通过Web API公开功能,而我想公开的url例如:
为了做到这一点,我必须像下面这样更改WebApiConfig类中的路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"\d*" }
);
config.Routes.MapHttpRoute(
name: "SpecificActionsRoute",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这似乎可行,但是我想知道这是否是定义路线的最佳方法。我需要两条路线吗?有没有更好的办法?
编辑:为完整起见,我不得不说我也使用属性路由,例如:
[GET("organizations")]
public IQueryable<OrganizationSummaryViewModel> Get(ODataQueryOptions<Organization> oDataQuery)
{
}
[GET("organizations/{id}")]
public OrganizationDetailsViewModel Get(int id)
{
}
[POST("organizations/addinstitutiontoorganization")]
public AddInstitutionToOrganizationCommandResult AddInstitutionToOrganization(AddInstitutionToOrganizationCommand command)
{
}
[POST("organizations/anotheroperation")]
public AnotherOPerationCommandResult AnotherOperation(AnotherOperationCommand command)
{
}
编辑2:我最终删除了属性路由,并将两个模板化路由保留在WebApiConfig中。
您的配置是为计划处理的URL定义路由的最佳方法。不能合并这两个路由,因为处理两段URL的第一条路由将第二段分配给id
,而处理三段URL的第二条路由将第二段分配给action
。有两个不同的路由是必要的,因为根据URL是两个段还是三个段来分配不同的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句