关于基于REST的WCF服务的困惑

时间:2012-06-18 06:18:58

标签: json wcf

如果我实现基于REST的WCF服务,那么作为一个请求,我将使用我的http url说fr示例http://www.example.com/createuser/user1

现在,我需要发布到服务器的数据将作为HttpRequest对象的一部分,如果我使用post方法,这是正确的吗?

另外作为回复的一部分,我得到的只是JSON,这是我想要的响应或HttpResponse对象,它有json作为它的身体的一部分?

2 个答案:

答案 0 :(得分:1)

首先,您的网址似乎仍然是RPC样式。方法名称在URL(createruser / user1)中嗅到。

相反,如果您的用户是资源,那么用户集合可能会显示如下 http://www.example.com/users (使用HTTP get)可以为您提供所有用户。

对于特定用户 使用HTTP get方法 http://www.example.com/Users/User_Id

如果你想创建一个特定的用户,那么 使用HTTP Post http://www.example.com/Users

现在,HTTP Post在表单集合中发送数据,因此创建用户的信息将作为表单数据发送。

至于respone,服务器可以向您发送多种形式的respone。客户端必须在接受标题中告诉他对于一个特定资源他想要什么样的表示(它可以在url中分类,也像twitter apis一样)。然后,服务器可以考虑客户端请求并在内容类型中为响应服务。除了JSON,XML和纯文本之外,还有其他媒体类型

对于您的HTTResponse对象,它取决于您使用何种技术进行requeset。如果您使用的是C#,那么您将获得一个HTTPResponse对象。如果Javascript那么你会得到响应,嵌入在XMLHttpRequest体内(通过responseXML或responseText)

修改 您可以将Rest StarterKit用于WCF,甚至可以使用WebAPI。 在WCF中,在声明操作合同时,您将使用以下属性

注释您的方法
[OperationContract]
[WebInvoke(Method="GET", UriTemplate="/GetData", 
           ResponseFormat=WebMessageFormat.Json)]
string GetData();

它告诉了什么

Method =“GET”用于此资源的http方法

UriTemplate =用于将方法映射到URL。一个特定的URL需要调用一个特定的方法。

ResponseFormat =服务器以此格式返回响应。

您可以在herehere

上找到更多详细信息

答案 1 :(得分:0)

我不知道你将如何实现RESTful服务,但我会推荐WebAPI。 您可以查看显示如何执行此操作的example,并且您可以看到客户端(Web浏览器)将显示响应的方式。

如果您认为作为客户端要向服务发送请求,并且您想知道如何执行此操作,那么您有几个选择。

我猜你正在使用.net这样做我可以使用的两个选项是:

  1. 使用“WebClient”类,它允许您以字符串或字节数组的形式获取响应。
  2. 使用HttpWebRequest和HttpWebResponse,然后你需要做更多的工作。