【问题标题】:Webservices that support both Rest+JSON and SOAP同时支持 Rest+JSON 和 SOAP 的 Web 服务
【发布时间】:2014-04-09 09:19:17
【问题描述】:

我需要想出一套网络服务。一些客户希望将其称为 REST-JSON 方式。其他一些采用 SOAP 方式的。我只想写一组代码。最重要的是,使用来配置参数,输出格式应该改变。换句话说,SOAP 客户端将传递 SOAP 输入 XML 并获得一个 SOAP 输出 XML。对于其他客户端,它将是 JSON。 我在这里有什么选择?

【问题讨论】:

  • SOAP 和 REST 不支持 XML 和 JSON。一个 RESTful 应用程序是关于资源的。 SOAP 基本上就是 RPC。

标签: spring web-services rest jersey cxf


【解决方案1】:

不重复自己通常是好的,但它会使事情变得复杂。 远程接口足够复杂,因此混合使用技术来减少几行代码可能会使您的接口(根本)不可维护。

你只问一般性,我只能给你一个一般性的答案。

首先有一个类似的帖子将带您进一步了解技术层:

is it possible to have same class for both soap and rest in cxf

但还有其他问题您也应该自己回答:

  • 您的服务应该做什么(用例)。
  • 在哪里剪裁。

您使用 Spring(或 Jersy MK2),因此使用 IoC 将极大地帮助您进行漂亮的剪辑。

正如您所料,我确实建议制作两个不同的 WS-Endpoint。一种用于 REST,另一种用于 SOAP。 一开始可能看起来反直觉,但我的推理很简单:

  • 太多的注释隐藏了你的东西在做什么。
  • 您可能有不同的技术需求 - 或者这些需求会随着时间的推移而发展
  • 关注点分离减少了测试时间。

为您的后端编写两个消费者可以让您更好地了解您的后端“有多好” - 以及您的用例有多糟糕。

上面那个链接背后的例子感觉不够复杂,不足以成为“真实世界”的案例。 这样做看起来不错。

一旦你开始在安全、计费、监控、跟踪方面做一些重要的事情......数量注释将以一种奇怪的方式堆积起来。

最后但并非最不重要的一点:在 REST 方式中有意义的东西不需要在 SOAP 方式中有意义,反之亦然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 2010-12-16
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2010-12-23
    • 1970-01-01
    相关资源
    最近更新 更多