我想拥有一个既带ID又带可选查询的WebAPI路径。
因此,通常情况下,客户端会发送:
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控制器enpoint定义如下,并处理第一种情况。
[Route("{Id}"), HttpGet]
public IActionResult GetTemplate(Guid Id, bool IncludePreview = false)
但是,一旦我发送带有查询字符串的第二个版本,api控制器就会触发(我有一个断点),但是,Id始终是Guid.Empty。
如何让我的API方法接受两个版本?还是我需要为两个版本创建一个单独的端点?
答案 0 :(得分:2)
您正在将“包括预览”布尔值分配为固定值。因此,即使您的调用在GetTemplate方法中捕获了IncludePreview = true,它也会重新分配。请尝试使用可为null的布尔值,并将“ null”作为分配值。
obj/%.o: devices/%/%.c
$(CC) $(CFLAGS) $< -o $@