如何使用GET请求将对象传递给RESTful服务?

时间:2011-12-01 05:11:11

标签: wcf rest

我在stackoverflow中看到一些帖子说“sending list of items in the GET Method, is NOT allowed. It has to be accomplished via POST method only

我的代码看起来像

    [OperationContract]
    [WebGet(UriTemplate = "Employee/{emp}",RequestFormat=WebMessageFormat.Json)]
    Employee GetEmpDetails(string emp);

我输入的json对象将是“{'id':1,'name':'test',....} 有没有其他方法可以解决这个问题。

由于

3 个答案:

答案 0 :(得分:3)

可以使用GET发送项目列表,只是开箱即用,只支持原始值。字符串值工作正常,但如果要传递复杂对象,则需要创建自定义QueryStringConverterhttp://blogs.msdn.com/b/carlosfigueira/archive/2011/08/09/wcf-extensibility-querystringconverter.aspx上的帖子解释了如何做到这一点。

答案 1 :(得分:2)

如果您使服务RESTful,您很可能将HTTP PUT用于Add方法,使用HTTP POST用于Update方法。将对象传递给这些方法是绝对可以的,因为objet将是HTTP请求主体的一部分,而不是URI的一部分。 URI对HTTP GET请求很重要。 HTTP GET请求应该仅用于数据检索,而不是用于数据修改。

答案 2 :(得分:1)

您正在混合HTTP GET / POST / ...请求和REST GET / POST / PUT / DELETE / ... 当你想要一些RESTful请求 - 你做一个GET请求。在你的情况下,我认为它应该看起来像

employee/{id}

employee/{name}

请注意,最好在URI中使用小写字母。 如果您需要多个GET标准,我认为它可能看起来像:

employee/id/{id}/name/{name}