【问题标题】:How to set UriTemplate a Web Service?如何设置 UriTemplate 一个 Web 服务?
【发布时间】:2015-04-22 09:12:49
【问题描述】:

如何像这样设置 UriTepmlate Attr:

/FunctionName?{json_data}

因为使用这个网络服务的人怎么称呼这种方式

例如: http://localhost/xxx/service/Func?{"x":"aaa","y":"bbb"}

我试过了

[OperationContract]
    [WebGet(UriTemplate = "/Func?{request}",
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]
    Result Func(string request);

比我得到的错误:

UriTemplate '/Func?{request}' 无效;查询字符串的每个部分都必须采用“name”形式或“name=value”形式,其中 name 是一个简单的文字。有关更多详细信息,请参阅 UriTemplate 的文档。 参数名称:模板

当我设置时

 [OperationContract]
    [WebGet(UriTemplate = "/Func?request={request}",
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]
    Result Func(string request);

它工作正常,但这不是他们想要的。

【问题讨论】:

    标签: c# web-services restful-url uritemplate


    【解决方案1】:

    你不能这样设置。原因是“?”在 URL 中表示 URL 参数将跟随,并且 URL 参数的格式始终为“name=value”

    你可以这样做

    [OperationContract]
    [WebGet(UriTemplate = "/Func?request={request}",
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]
    Result Func(string request);
    

    或者

    [OperationContract]
    [WebGet(UriTemplate = "/Func/{request}",
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]
    Result Func(string request);
    

    如果你像最后一个例子那样做,你的参数请求只能是一个字符串。

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2012-03-08
      • 2011-02-16
      • 2021-07-30
      • 2012-06-27
      相关资源
      最近更新 更多