接受POST的多个表示

时间:2012-01-27 09:12:16

标签: post wcf-web-api

我正在快速使用WCF Web API。我想通过POST方法公开一个可以接受笔记的端点。我的问题是,我想支持多个笔记表示。例如,我可能希望使用我们在其他地方使用的自定义XML序列化或作为atom:entry元素接受注释。我已经有格式化程序可以将它们反序列化为Note类(我们自己的自定义类)或SyndicationItem

问题是,如何定义方法?我现在有这个:

[WebInvoke(UriTemplate = GetNotesUriRoot,Method="POST")]
public HttpResponseMessage PostNote(ObjectContent item,HttpRequestMessage request)

启动时失败:

  

服务操作'PostNote'永远不会收到'ObjectContent'类型的输入参数'item'的值。确保请求HttpOperationHandler的输出参数的类型可赋值为“ObjectContent”。

我最初尝试使用两个单独的方法(使用适当类型的参数),但它们不能共享相同的端点名称。目前的努力(使用ObjectContent)基于我能找到的其他帖子,表明它可能是一个参数。 NoteSyndicationItem

之间没有共同的基本类型或界面

我们正在使用WCF Web API的v0.6.0

2 个答案:

答案 0 :(得分:0)

您需要具有Note类型的参数/返回类型,并且格式化程序将(de-)将其序列化为所需的表示形式。

答案 1 :(得分:0)

[WebInvoke(UriTemplate = GetNotesUriRoot,Method="POST")]
public HttpResponseMessage PostNote(Note note)

然后在您的请求中,content-type标头将确定对象的反序列化方式。您不必担心决定如何反序列化,只要相关的格式化程序存在,我就会为您做出决定(我还没有深入研究格式化程序,因为到目前为止,json / xml已经足够了)< / p>