【问题标题】:How to have both 'get by id' and 'get by name' routes on ASP.NET core 2.0 controller?如何在 ASP.NET core 2.0 控制器上同时拥有“按 ID 获取”和“按名称获取”路由?
【发布时间】:2018-03-16 03:02:12
【问题描述】:

我正在编写一个小型 Web API 控制器。目前我已经路由了一个

[HttpGet("{id}"}]

路径,它工作正常:localhost:8080/Controller/1 返回 id 等于 1 的项目。

问题是我正在尝试添加“按名称获取”请求:

[HttpGet("{name}")]

我该怎么做呢?

感谢您的宝贵时间

【问题讨论】:

  • 不太确定你在问什么.. 你想在同一个类中有两个 GET 请求吗?
  • 基本上我想在同一个控制器路由上有 2 个 GET 请求。一个接收字符串,另一个接收整数。现在问题已经通过下面的答案解决了,抱歉我的措辞不够清楚。

标签: c# asp.net model-view-controller api-design


【解决方案1】:

在这个确切的示例中,您可以输入一个路由约束,指示 id 是一个 int。之后它应该会正确路由。

[HttpGet("{id:int}")]
public string GetById(int id)
{
   return id.ToString();
}

[HttpGet("{name}")]
public string GetByName(string name)
{
   return name + " name";
}

【讨论】:

  • 非常感谢。完美运行。
  • 为什么我看到下一个错误:HttpGetAttribute 不包含采用 1 个参数的构造函数?我正在使用 web api 应用程序。
猜你喜欢
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多