WebInvoke属性是否可以将GET作为方法?我在Microsoft文档中看不到任何关于此的概念。我已经看到它在一些论坛的例子中使用过。
原则上,不应该这样,当使用webInvoke时,您可以发布,放置和删除。相反,当使用WebGet时,您只能通过HTTP使用GET动词,这意味着您不能发布,删除和放置。现在Get-operations不应该修改数据,它们应该根据W3org是幂等的,因此不是WebInvoke属性中的一个选项。有人可以在WebInvoke属性中指出GET动词的角色或存在,特别是在REST编程的上下文中。
答案 0 :(得分:4)
WebInvoke
是任何HTTP动词(包括GET)的一般属性。如果将它与GET一起使用,则必须遵循所有GET的限制 - 操作参数必须是映射到URI路径参数的简单类型。
WebGet
仅适用于GET动词和恕我直言,它主要是为了显示GET和其他动词之间的区别(GET应该是幂等的,GET没有身体等等)
使用这些属性的.NET中最重要的方法是内部GetWebMethod
:
internal static string GetWebMethod(OperationDescription od)
{
WebGetAttribute wga = od.Behaviors.Find<WebGetAttribute>();
WebInvokeAttribute wia = od.Behaviors.Find<WebInvokeAttribute>();
EnsureOk(wga, wia, od);
if (wga != null)
{
return "GET";
}
if (wia == null)
{
return "POST";
}
return (wia.Method ?? "POST");
}
正如您所见,WebInvoke
的GET方法正常处理。