0

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

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

同样作为响应的一部分,我得到了什么,我得到的只是 JSON,这是我想要的响应还是 HttpResponse 对象,它有 json 作为它的主体的一部分?

4

2 回答 2

1

首先,您的 URL 仍然看起来像 RPC 样式。方法名称在 URL (createuser/user1) 中有异味。

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

对于具有 HTTP 获取方法的特定用户 http://www.example.com/Users/User_Id

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

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

至于响应,服务器可以向您发送多种形式的响应。客户端必须在接受标头中告诉他他想要特定资源的哪种表示形式(它可以在 url 中被 sepcified 也像 twitter apis)。服务器然后可以考虑客户端请求并将响应以内容类型提供给服务器。除了 JSON、XML 和纯文本之外,还有其他媒体类型

至于您的 HTTResponse 对象,这将取决于您使用哪种技术来进行请求。如果您使用的是 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 = 服务器以这种格式返回响应。

你可以在这里这里找到更多细节

于 2012-06-18T06:36:03.200 回答
0

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

如果您的意思是作为客户端您想向服务发送请求并且您想知道如何做到这一点,那么您有几个选择。

我猜您正在使用 .net 来执行此操作,因此您可以使用两个选项:

  1. 使用“ WebClient ”类将允许您以字符串或字节数组的形式获取响应。
  2. 使用 HttpWebRequest 和 HttpWebResponse 然后你需要做更多的工作。
于 2012-06-18T06:56:35.730 回答