2016-08-23 46 views
0

我有一個REST服務,它在我的數據庫中創建了一些元素。這些元素是在服務器方法中「靜態」創建的,並且不是由客戶端給出的,但是在操作完成後會返回給客戶端。REST服務沒有發送對象,GET,POST或者PUT?

如果我宣佈服務爲PUT/POST(因爲我要創造新的東西)客戶端需要發送的對象,它具有爲空,因爲客戶端沒有對象發送(一切都做在服務器中)。

我若爲GET我不會需要發送一個空的對象,但我的GET法會創造一些東西,我不從GET-方法

所以我們期待在這種情況下,最好的方法是什麼:PUT,POST或GET?

+0

?如何在向您發出任何請求之前創建元素,並將GET方法公開給客戶端,以便您可以返回這些元素? – Naveen

+0

如果您多次調用資源會發生什麼情況?應該在每次調用時創建對象(副作用)還是隻應創建一次對象?在起始案例中,由於它們的冪等語義,你不能使用'PUT'或'GET'。在後一種情況下,我寧願@NaveenAechan建議 –

+0

@NaveenAechan您的方法可以在我的情況下工作,它可以避免一些問題,如羅曼沃特納指出的多重創建。我會試一試。無論如何,我想知道是否應該使用GET,POST或PUT作爲我在問題 – iberbeu

回答

1

這就是我期待這樣做的方式。

  1. 使用ServletContextListener並在上下文初始化後調用您的邏輯。 Refer this link
  2. 而對於用戶而言,則會公開一個網址http://yoururl/get/created/stuff並返回您之前創建的元素。可能是從數據庫拉和轉換爲JSON/XML /純文本等

一些更references

你只是想觸發僅在客戶端調用這些元素創作
1

POST without payload是可能的,一個可能會響應您的方法。

+0

儘管根據規範可能沒有有效負載的POST(就像帶有負載的GET一樣),但許多代理和Web服務器都有問題。如果您的目標是兼容性,建議至少允許一些將被忽略的內容。 – Tomas

相關問題