【问题标题】:How to have optional parameters in WCF REST service?如何在 WCF REST 服务中有可选参数?
【发布时间】:2011-09-21 10:14:15
【问题描述】:

我正在寻找一种可以将任何内容传递到特定 url 的方法,以便我自己解析它。 像这样:

    [OperationContract]
    [WebGet(UriTemplate = "/whatever/blabla/{query}", RequestFormat = WebMessageFormat.Xml)]
    string AddRouteForUser(string query);

之后我可以自己解析查询以获得我需要的值。 可能吗 ? 有没有更好的办法?

谢谢

[编辑标题]

【问题讨论】:

  • 没有,如何拥有...拼写检查必须是可选的
  • 有人开了一个新话题stackoverflow.com/questions/12246168/…,和大家分享一下看法。在我意识到这一点之前,我已经把我的答案放在那里了

标签: c# wcf


【解决方案1】:

一种选择是使用查询字符串参数,因为根据定义,它们是标记在查询上的选项的可选属性包。这样就可以成为您的休息资源的不可变标识符。

/whatever/blabla?some=data&whichis=optional

如果没有对数据和其他资源的具体了解,很难说

编辑:

QueryStrings 可以是可选的。
见 Anand @https://connect.microsoft.com/VisualStudio/feedback/details/451296/rest-wcf-uritemplate-optional-querystring-parameters的评论

“您可以通过在 WebGet 或 WebInvoke 属性的 UriTemplate 中省略查询字符串并使用 WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters 来获得所需的效果”

【讨论】:

  • 我并没有真正得到那个。这是否迫使我对所有可能性进行硬编码?
  • 编辑了更多信息以回答您的问题 - 这表示您可以省略 QA,它是可选的。如果你同时有 get 和 invoke ,那么解决方法是上面的 QueryParameters 方法。
  • 甜,它比我使用 OperationContext 所做的要简单得多。谢谢!
  • 如果查询字符串没有斜杠,它只允许参数对我来说是可选的。有了它,就不行了。您还必须更改 UriTemplate 才能使其正常工作。
【解决方案2】:

最后我将使用 OperationContext 来获取完整的 url 并自己解析它。 我刚刚输入了 WebGet this /whatever/{query},所以我知道我想要处理什么。

【讨论】:

  • 毕竟我不会这么做,看看官方回复为什么。
猜你喜欢
  • 2016-03-30
  • 1970-01-01
  • 2020-01-24
  • 2011-07-22
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
相关资源
最近更新 更多