【发布时间】:2024-05-19 21:40:02
【问题描述】:
我正在尝试使用 Web Api 最佳实践创建 REST 服务,但遇到了一种我不知道如何处理的情况。
假设我有组,并且在每个组内我都有用户。
这就是我的 GroupController 的样子:
[RoutePrefix("api/v1/groups")]
public class GroupsController : ApiController
{
[HttpGet]
[Route("{id:int}")]
public IHttpActionResult Get(int id)
{
return Ok();
}
// I also want to add endpoint which fetches all the users inside of group and I'd like to do it like this:
[HttpGet]
[Route("{id:int}/users")]
public IHttpActionResult Get(int id)
{
return Ok();
}
}
如您所见,我的第二个方法无法编译,因为我们不能在同一个类中有两个具有相同签名的方法。
我的路线模板看起来像标准的:
config.Routes.MapHttpRoute(
name: "DefaultRouting",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我知道我可以添加一个映射动作方法名称的路由,但我想知道是否有更好的方法来实现我的目标。我想坚持编写 RESTful 服务的最佳原则。据我所知,其中一个建议是避免自定义操作名称,因为这对于 WCF 服务更为常见。
【问题讨论】:
标签: rest asp.net-web-api asp.net-mvc-routing