支持Rest + JSON和SOAP的Web服务

时间:2014-04-09 09:19:17

标签: spring web-services rest jersey cxf

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

1 个答案:

答案 0 :(得分:2)

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

正如你只问一般我只能给你一般答案。

首先,有一篇类似的文章将进一步介绍技术层:

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

但是你还应该回答其他问题:

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

你使用Spring(或Jersy MK2),所以使用IoC可以帮助你做出很好的削减。

如您所见,我建议制作两个不同的WS-Endpoint。一个用于REST,一个用于SOAP。 它可能首先看起来很直观,但我的推理很简单:

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

为您的后端编写两个消费者可以让您更好地感受"多么好"你的后端是 - 你的用例是多么笨拙。

上面这个链接背后的例子感觉不够复杂,不能成为真正的世界"案例。 它只是看起来很好。

一旦你开始做一些关于安全性,计费,监控,跟踪的重大魔力......注释的数量会以一种奇怪的方式堆积。

最后但并非最不重要的是:以REST方式使Sense成为不需要以SOAP方式有意义,反之亦然。