REST WCF服务-不同的数据输入格式(JSON/XML)

本文关键字:格式 JSON XML 输入 数据 服务 WCF REST | 更新日期: 2023-09-27 17:49:36

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

我正在使用WCF来制作restful服务。用户通过http post请求向我的方法发送数据。

我已经做了一个方法接收一个字符串表示json格式的数据。因此,我只需解析它并创建要读取的对象。

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

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

你能帮我吗?

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

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

我看到输入是一个自定义类…所以,我认为客户可以给我一个xml表示这个类。或不呢?我能像这样简单地管理输入吗?

REST WCF服务-不同的数据输入格式(JSON/XML)

我个人是这样用的

    [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

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

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

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

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

请求消息的内容类型。

操作中默认设置的格式。

WebHttpBehavior的默认格式设置。