2013-02-27 83 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