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

Json 关于基于REST的WCF服务的困惑,json,wcf,Json,Wcf,如果我实现了一个基于REST的WCF服务,那么作为一个请求,我将只使用我的http url,比如fr示例 现在,我需要发布到服务器的数据将作为HttpRequest对象itslef的一部分,如果我使用post方法,这是否正确 作为响应的一部分,我应该得到什么,我应该从响应中得到JSON,还是从HttpResponse对象中得到JSON,该对象的主体中包含JSON?首先,您的URL看起来仍然是RPC样式。方法名在URL(createruser/user1)中有气味 相反,如果您的用户是资源,那么用

如果我实现了一个基于REST的WCF服务,那么作为一个请求,我将只使用我的http url,比如fr示例

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


作为响应的一部分,我应该得到什么,我应该从响应中得到JSON,还是从HttpResponse对象中得到JSON,该对象的主体中包含JSON?

首先,您的URL看起来仍然是RPC样式。方法名在URL(createruser/user1)中有气味

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

对于一个特别的用户 http://www.example.com/Users/User_Id使用HTTP get方法

如果要创建特定用户,则 http://www.example.com/Users使用HTTP Post

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

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

至于HTTResponse对象,这将取决于您使用什么样的技术来生成requeset。如果您使用的是C#,那么您将得到一个HTTPResponse对象。如果使用Javascript,那么您将得到嵌入XMLHttpRequest主体中的响应(通过responseXML或responseText)

编辑 您可以使用Rest StarterKit for WCF,甚至可以使用WebAPI。 在WCF中,在声明操作契约时,您将使用以下属性对方法进行注释

[OperationContract]
[WebInvoke(Method="GET", UriTemplate="/GetData", 
           ResponseFormat=WebMessageFormat.Json)]
string GetData();
这说明了什么

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

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

ResponseFormat=Server以此格式返回响应


您可以在上面找到更多详细信息,我不知道您将如何实现RESTful服务,但我建议您使用WebAPI。 您可以查看这一点,了解如何做到这一点,并且可以看到客户端(web浏览器)显示响应的方式

如果您的意思是,作为客户机,您希望向服务发送请求,并且您想知道如何这样做,那么您有一些选择

我猜您正在使用.net来实现这一点,因此我认为您可以使用以下两个选项:

  • 使用“”类,该类将允许您以字符串或字节数组的形式获取响应
  • 使用HttpWebRequest和HttpWebResponse,然后您需要做更多的工作

  • 我的动机是从服务器获取JSON,只是简单的JSON。我想这是可能的,但如何实现呢?顺便说一句,我非常喜欢你的答案!请看答案的第二部分