2013-02-27 79 views
1

我想将一些基于SOAP的Web服务转换为Restful Web服务。在我们现有的一个基于SOAP的Web服务中,我们传递一个RequstDTO,Web服务返回一个ResponseDTO。 RequestDTO和ResponseDTO都是复杂的Java类,其中包含其他自定义JavaBean类。这是一个“读取”操作,因此它自然会映射到REST操作。将ResponseDTO转换为XML或JSON没有问题。但我不确定如何将RequestDTO转换为RESTful API。发送复杂的数据到Restful Web服务 - API设计

  1. 如果我将RequestDTO中的所有数据转换为查询字符串,URL将会很长。 RESTful Web服务通常由应用程序使用,因此浏览器URL长度限制并不适用。但在大多数情况下,短网址仍然是首选。
  2. RequestDTO中的某些属性可能具有PHI敏感信息,我不希望将它们放入URL中。

一个解决方案是将请求数据嵌入到请求正文中,即使它是GET操作。但根据我的研究,这种方式是不鼓励 http://tech.groups.yahoo.com/group/rest-discuss/message/9962

那么有什么替代?什么是设计这个的正确方法?

+0

你可以举一些例子。否则很难回答 – smk 2013-02-27 01:44:15

+0

这是一个GET操作还是某种查询? – 2013-02-27 02:38:55

+0

这是一个查询。我试图决定是否应该使用查询字符串进行GET,并使用请求正文或POST操作进行GET。 – Lan 2013-02-27 02:44:00

回答

0

我不完全确定你为什么需要通过requestDTO来进行REST调用。

通常你只是做这样的事情

GET /资源/ ID 现在,如果你想要的资源就像是一个二次资源..例如,你有属于用户的用户和信用卡。

GET /用户/ {USER_ID}

GET /用户/ {USER_ID}/CreditCards/{} credit_card_id

当然,这可以被嵌套你想要但是很多次和。

+0

在我们的例子中,查询比基于user_id和credit_card_id复杂得多。我需要将包含大约20-30个字段的复杂对象发送到Web服务以检索我需要的数据。另外,正如我在问题中提到的,有些数据是PHI相关的,我最好不要将它们放在URL中。 – Lan 2013-02-27 02:09:39

+1

@smk:并非世界上的一切都是一个资源,有一个地址。 – 2013-02-27 02:38:15