【发布时间】:2017-12-21 22:20:06
【问题描述】:
我正在努力理解使用单个方法和可选参数来接受带有ApiController 查询参数的Get 方法之间的区别。
我在浏览器中编写了代码,因此请原谅任何错误。为简洁起见,我还省略了其他基本操作。
以下是给定 url 的选项(我计划有更多可以选择传入的查询字符串):
GET http://myAppi.com/resources?color=red
GET http://myAppi.com/resources?color=red&shape=round
对于我的端点,我会执行以下操作:
[Route("")]
public IEnumerable<string> Get(string color)
{
List<string> someList = new List<string>();
//some selecting linq color logic here
return someList;
}
[Route("")]
Public IEnumerable<string> Get(string color, string shape)
{
List<string> someList = new List<string>();
//some selecting linq color and shape logic here
return someList;
}
还是我使用可选参数...
[Route("")]
public IEnumerable<string> Get(string color, string shape = null)
{
List<string> someList = new List<string>();
if (String.IsNullOrWhiteSpace(shape))
{
//some selecting linq color logic here
}
else
{
//some selecting linq color and shape logic here
}
return someList;
}
有什么区别?
【问题讨论】:
-
你在征求意见,这是题外话。也就是说,我更喜欢第一个。如果函数的整个逻辑基于可选参数发生变化,则该函数应拆分为两个方法。此外,一些 Web API 文档工具对诸如此类的可选参数感到不满。
-
@Amy 这里真的没有区别吗?我问这个问题是因为我不知道。也许有一个正确和错误的答案。如果这些确实是平等的并且是意见问题,我将删除该问题。
-
嗯,是的,有区别,但这不是被问到的问题。我建议编辑问题,这样您就不会问哪个更好。
-
@Amy,更新了...如果你知道,我将不胜感激分享知识:) 谢谢。
-
不足以获得完整答案:可选参数为sort of CLS-compliant。这可能对您来说根本无关紧要,但它仍然是您的代码示例之间的区别。一个是符合 CLS 的,另一个是 shrug。
标签: c# .net rest asp.net-web-api2