如何在C#中使用可选参数构建web服务/web api
本文关键字:web 构建 参数 服务 api | 更新日期: 2023-09-27 18:15:38
我正在使用web服务构建web API。用户可以这样使用它:http://www.example.com/example.asmx/hello?param1=str¶m2=str
或:
CCD_ 2。
我想让param1是必需的,而param2是可选的。但是,当我尝试调用http://www.example.com/example.asmx/hello?param1=str
时,下面的代码总是抛出一个异常,表示参数缺少值。它与http://www.example.com/example.asmx/hello?param1=str¶m2=str
配合良好。
[WebMethod]
public string hello(int param1, int param2 = 0)
{
return "hello!";
}
有什么办法解决它吗?如果没有,我可以使用什么技术来构建一个接受可选参数的web API,这在公共API中非常常见。我是个新手,所以我不知道web服务是否是构建web API的好选择。感谢您的帮助。
基本上你做不到。
我建议你先读这篇文章:http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx
它很好地解释了参数是如何绑定的。
您是否考虑过使用在应用程序(wpf/winforms(中工作的params。
// not tested
[WebMethod]
public string hello(params int[] list)
{
string s = "Hello'n";
// do some stuff with your ints
for ( int i = 0 ; i < list.Length ; i++ )
s += list[i] + "'n" ;
return s;
}
问题可能是web方法需要此参数。也许这会有所帮助。
根据MinOccurs属性绑定支持和默认属性绑定支持:
-
值类型,附带一个公共布尔字段,该字段使用前面在将XSD转换为输出
<element>
元素0的源-minOccurs值下描述的指定命名约定。
result:[WebMethod] public SomeResult SomeMethod(bool optionalParam, [XmlIgnore] bool optionalParamSpecified)
<s:element minOccurs="0" maxOccurs="1" name="optionalParam" type="s:boolean" />
-
具有通过系统指定的默认值的值类型。组成部分DefaultValueAttribute-minOccurs输出
<element>
元素0的值。在<element>
元素中,默认值也是通过默认的XML属性指定的。
result:[WebMethod] public SomeResult SomeMethod([DefaultValue(true)] bool optionalParam)
<s:element minOccurs="0" maxOccurs="1" default="true" name="optionalParam" type="s:boolean" />