您的服务合同接口就是这样 - 服务器接受什么和客户需要遵守的正式合同。此合约以wsdl的形式序列化为XML - 因此,出现在您的合同中的任何数据类型都必须以XML的序列化形式表示。
在你的情况下,你的服务调用的参数数量没有明确定义:它可能有0,1,2 ...等服务方向的租户之一是合同需要明确 - 这不是。
最“地道”的方式(一个面向服务的环境中)如下:
[ServiceContract]
public interface IRestService {
[OperationContract]
[WebGet(UriTemplate = "operations/{values}")]
void Operations(string[] values);
}
正如this answer建议,如果你想添加一些语法糖在客户端,你可以创建一个扩展方法确实使用params
关键字使客户端体验更容易消化。
编辑:
正如Tom指出,上述合同将无法正常工作。你会需要更改操作的POST(上Tom's answer作为证明),或使一个参数字符串分隔你解开在服务器端生成数组:
[ServiceContract]
public interface IRestService {
[OperationContract]
[WebGet(UriTemplate = "operations/{delimitedValues}")]
void Operations(string delimitedValues);
}
这会运行甚至工作?查询字符串如何映射到模板中?其余的答案很好,但我只是不确定提供的代码示例。 –
你说得很好 - 我已经编辑了我的答案。感谢您指出了这一点。 – Lawrence