asp.net-core - 路由以允许来自查询字符串和默认 {id} 模板的参数
问题描述
我的 ASP.Net Core WebAPI 控制器中有一个动作,它采用一个参数。我正在尝试将其配置为能够以下列形式调用它:
api/{controller}/{action}/{id}
api/{controller}/{action}?id={id}
我似乎无法正确路由,因为我只能制作一种表格来识别。(简化的)动作签名如下所示:public ActionResult<string> Get(Guid id)
. 这些是我尝试过的路线:
[HttpGet("Get")]
--映射到api/MyController/Get?id=...
[HttpGet("Get/{id}")]
--映射到api/MyController/Get/...
- 他们俩——映射到
api/MyController/Get/...
如何配置我的操作以使用两种 URL 形式调用?
解决方案
如果您想使用路由模板,您可以在 Startup.cs 中提供一个配置方法,如下所示:
app.UseMvc(o =>
{
o.MapRoute("main", "{controller}/{action}/{id?}");
});
现在您可以使用两个请求地址。
如果要使用属性路由,可以使用相同的方式:
[HttpGet("Get/{id?}")]
public async ValueTask<IActionResult> Get(
Guid id)
{
return Ok(id);
}
推荐阅读
- wpf - 如何解决 XAML 中的“缺少类型”错误?
- javascript - 如何遍历 json 数据并修改访问者名称?
- vaadin - Vaadin Combobox 不显示数据库中的 nameField
- python - 使用最大/最小纬度和经度以及网格点数,如何获得纬度/经度网格?
- java - 使用 CSS 将两个 Vaadin 画布分层
- javascript - 如何循环请求并找到第一个错误
- postgresql - 将 TestNG 开始和停止时间转换为没有时区的 Postgres
- docker - 无法验证证书
因为它不包含任何 IP SAN - python - 显示函数的输出时出现问题
- python - Windows 10 适合用 Python 编程吗?