WCF 消耗多个可能的 REST 响应
-
23-08-2019 - |
题
我最近开始阅读有关 WCF 中的 WebHttpBinding 用法以及能够使用 REST 服务的内容,但是,我现在对此有点困惑。
我正在编写一项服务,该服务向给定的 api 发出单个请求,但可以返回多个响应之一。
例如,通用响应:
<ActualResponse>
<ResponseItem>
<Name />
<Area />
</ResponseItem>
</ActualResponse>
但是,如果传出请求中存在无效内容或响应服务本身遇到任何类型的问题,则返回的响应将是:
<ErrorResponse>
<Message />
</ErrorResponse>
Pedram Rezaei 发表了一篇很棒的文章 使用 REST 服务, ,这是我借用大部分信息的地方。据我所知,只要该对象定义了可序列化的属性,我们就可以创建该对象。问题是,创建哪个类没有任何条件(ErrorResponse/ActualResponse)。
我不确定是否应该查看某种 TryParse 功能,如果无法发生反序列化或者是否有更优雅的方法,该功能会发送初始请求并捕获错误。
我对 WCF 世界相当陌生,所以我可能完全忽略了一些东西!
解决方案
我觉得你可以借用SOAP一些练习,其中有一个层次,像这样:
<soap:Envelope>
<soap:Body>
... message contents
</soap:Body>
</soap:Envelope>
我不建议你使用SOAP,我建议你从SOAP采用的设计借鉴。什么SOAP不被嵌入体内的成功(或者你的话 “实际”)响应,或的返回的皂:身体内的故障。
在SOAP成功的可能是这样的:
<soap:Envelope>
<soap:Body>
<ActualResponse>... </ActualResponse>
</soap:Body>
</soap:Envelope>
而故障可能是这样的:
<soap:Envelope>
<soap:Body>
<soap:Fault>... </soap:Fault>
</soap:Body>
</soap:Envelope>
在你的情况,你可能有这样的:
<ServiceResponse>
<ActualResponse> ... </ActualResponse>
</ServiceResponse>
或
<ServiceResponse>
<Fault> ... </Fault>
</ServiceResponse>
和XML序列化是真的不错。 。
但它听起来像你有在信封没有控制权。事实是,你可以得到多种不同的反应。为了解决这个问题,你可以换一个做作的XML信封收到的实际响应,和反序列化的是的结果。
如果你得到
不隶属于 StackOverflow