Wcf服务RESTful

时间:2011-12-23 16:00:21

标签: wcf json post get

我用这样的帖子制作了我的方法:

[OperationContract]
[WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
List<Human> GetHuman(UserEnteredName humanName);

UserEnteredName类只有一个属性 - string。

它有效。但是,我需要让它得到,而不是发布。

我试过这个:

[WebInvoke(Method= "GET", UriTemplate = "GetHuman?username={John}", 
           ResponseFormat = WebMessageFormat.Json, 
           RequestFormat = WebMessageFormat.Json)]

但它不起作用。我需要改变什么?

1 个答案:

答案 0 :(得分:1)

根据您的UriTemplate,您的方法必须看起来像

Human GetHuman(string John)

我怀疑你错误地在UriTemplate中添加了一个可能的参数值。尝试像

这样的东西
[WebInvoke(Method= "GET", UriTemplate = "GetHuman?username={userName}", 
           ResponseFormat = WebMessageFormat.Json, 
           RequestFormat = WebMessageFormat.Json)]
Human GetHuman(string userName)

此外,对于GET,您可以使用稍微清晰的WebGetAttribute


我会更改您的方法以获取string参数并在方法正文中构造UserEnteredName实例。如果它使用UserEnteredName,则可以使用TypeConverterAttribute类型作为参数,但我从未这样做过,所以我不能说它是多么容易(或不是)。请参阅WCF Web HTTP Programming Model Overview,特别是 UriTemplate查询字符串参数和网址部分。