属性路由 - 每个方法,类还是需要?

时间:2017-05-18 04:27:20

标签: asp.net-web-api2 asp.net-web-api-routing

假设您有一个API控制器。此控制器的某些方法使用相同的路径:

[HttpPost] // /api/entities
public IHttpActionResult Add(Entity entity)
{
  ...
}

[HttpGet] // /api/entities
public IHttpActionResult FindAll()
{
  ...
}

[HttpGet] // /api/entities
public IHttpActionResult Find(String name)
{
  ...
}

[HttpGet] // /api/entities/id
public IHttpActionResult Find(Int32 id)
{
  ...
}

[HttpDelete] /api/entities/id
public IHttpActionResult Remove(Int32 id)
{
  ...
}

我是将RouteAttribute应用于所有方法还是仅应用于两种方法来覆盖“api / entities”和“api / entities / id”?或者将两个RouteAttribute应用于类本身是否更好?

1 个答案:

答案 0 :(得分:0)

如果您在配置中指定了默认路由,那么:

routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

您不必应用路由属性,不要忘记请求将不仅通过HTTP方法映射到操作,还通过参数类型映射到操作,因此应该没有问题。

看看"行动" documentation.

的部分