【发布时间】:2018-10-20 17:54:01
【问题描述】:
我想要一个 WebAPI 路径,该路径接受一个 Id,但也接受一个可选查询。
所以,通常情况下,客户端会发送:
http://localhost:49487/api/template/5b31b31c-ecd9-4e7a-bcdb-1c263399c86f
但有时,我需要在有效负载中返回一些额外的细节。所以我希望他们发送:
http://localhost:49487/api/template/5b31b31c-ecd9-4e7a-bcdb-1c263399c86f?IncludePreview=true
我的 .Net Web API Controller enpoint 是这样定义的,并处理第一种情况。
[Route("{Id}"), HttpGet]
public IActionResult GetTemplate(Guid Id, bool IncludePreview = false)
但是,一旦我发送了第二个版本,带有查询字符串,api 控制器就会触发(我有一个断点),但是,Id 始终是 Guid.Empty。
如何让我的 API 方法同时接受这两个版本?还是我需要为这两个版本创建一个单独的端点?
【问题讨论】:
-
将其更改为 [FromQuery] bool IncludePreview
-
MVC 带有
[FromQuery]属性,该属性将数据的绑定限制为仅查询字符串,但如果我们使用它,它仍然将它们视为可选 -
代码是针对asp.net-core的,但是你的标签是针对asp.net-web-api的,它通常与旧版本的web api相关联。是哪个?
标签: c# asp.net-web-api