REST WCF服务 - 差异数据输入格式(JSON / XML)

时间:2015-05-19 07:16:55

标签: c# json xml wcf rest

也许这是一个愚蠢的问题,但我需要一些帮助。

我正在使用WCF来提供宁静的服务。用户通过http post request将数据发送给我的方法。

我已经完成了一个接收表示json格式数据的字符串的方法。所以,我只是解析它并创建我的对象来阅读。

我的愚蠢问题是:如何设置另一种能够以XML格式接收数据输入的方法?我的意思是,对于json我只想要一个字符串来解析。对于XML?

这是我第一次遇到这个问题,我想学习如何以干净的方式(比如json的字符串)。

你能帮助我吗?

更新: 例如,我有这个示例方法:

    [OperationContract]
    [WebInvoke(UriTemplate = "Patient/Add", Method = "POST")]
    int AddPatient(Patient patient);

我看到输入是一个自定义类...所以,我认为客户端可以发送一个代表这个类的xml ..或不?我可以像这样管理输入吗?

1 个答案:

答案 0 :(得分:2)

我个人使用这样的东西。

    [OperationContract]
    [WebInvoke(Method = "POST",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "json")]
    void AddUsefulLinkJson(UsefulLinksWCF.Models.UsefulLink link);

    [OperationContract]
    [WebInvoke(Method = "POST",
        RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        UriTemplate = "xml")]
    void AddUsefulLinkXml(UsefulLinksWCF.Models.UsefulLink link);

那么当你使用客户端时,你可以像这样在json或xml中请求数据:

http://www.something.com/UsefulLinks/rest/xml

http://www.something.com/UsefulLinks/rest/json

关于从.NET 4.0开始的格式选择,MSDN上有一篇很好的文章:

https://msdn.microsoft.com/en-us/library/ee476510%28v=vs.100%29.aspx

启用后,自动格式化会选择返回响应的最佳格式。它通过按顺序检查以下内容来确定最佳格式:

请求消息的Accept标头中的媒体类型。

请求消息的内容类型。

操作中的默认格式设置。

WebHttpBehavior中的默认格式设置。