2012-09-11 129 views
1

所以我問了這個問題with the return type如何在java web服務中用PUT方法接收參數

現在我儘量讓PUT方法是這樣的:

@PUT 
@Path("deleteAbsence") 
@Produces("text/html") 
public Response deleteAbsence(@QueryParam("id") String absenceID) { 
    String data = null; 
    return Response.ok("asda {"+absenceID+"}").build(); 
} 

而且我absenceIDnull。我需要改變什麼來接收參數?

這裏是我從服務器收到錯誤415的答案: response

+2

順便說一句,如果要刪除的資源,爲什麼要使用PUT,而不是刪除? – Tarlog

+1

這不是關於調用其他方法。這是關於API和這個API的功能。如果它刪除了一個資源,你應該使用DELETE,如果它更新了一個資源,你應該使用PUT。如果您有空閒時間,請閱讀http://tarlogonjava.blogspot.com/2012/04/rest-best-practices-using-http-verbs.html – Tarlog

+2

當您定義網址時避免網址中的動詞作爲其他練習,您可能會最終與每個動作相對應的網址。如果你不按預期的方式使用事物,你可能會陷入兩者之間。 – basiljames

回答

1

調用資源與正確的查詢參數:

PUT http://example.com/deleteAbsence/?id=42 
+1

您的回答不正確。你在搞亂查詢和路徑參數。 – Tarlog

+0

它會是這樣的,如果我使用GET就像在這個例子中,但我使用PUT所以這是別的...不知道什麼 –

+1

@Tarlog謝謝,解決了這個問題。 – 2012-09-11 08:51:34

2

發送PUT請求http://example.com/deleteAbsence/?id=42

+0

它不起作用,我得到這個HTTP狀態405 - –

+0

405不是查詢參數錯誤。這意味着給定url的PUT方法不存在。要麼你沒有註冊你的資源,或者你使用了錯誤的網址。 – Tarlog

+0

順便說一句,如果你收到405,那麼就不會發生這種情況。你根本不能達到這個方法。 – Tarlog

0

在我不得不說的內容:

"<"absenceIDString >2 "<"/absenceIDString> 

和方法如下:

@Consumes("application/xml") 
@PUT 
@Path("deleteAbsence") 
@Produces("text/html") 
public Response deleteAbsence(String absenceIDString) { 
    String data = null; 
    return Response.ok("asda {"+absenceIDString+"}").build(); 
    } 
+0

所以你將id移到了body上,並增加了@Consumes來修復415.不是很RESTful的方式。 – Tarlog

0

這是與在MyEclipse中您REST Web服務資源管理器配置。屏幕截圖顯示您的變量名稱爲absenseIdString,而它應該是id。確保您已將參數類型配置爲QueryParam。在myeclispe配置屏幕中,默認值是PathParam。

入住這tutorial