我正在爲我們的一個數據模型(Oracle)的RESTful API工作,並且正在使用JAX-RS(Java6註釋)實現它。我希望得到一些指導的問題是如何在成功完成PUT方法時返回適當的HTTP狀態方法(對於INSERT爲200;對於UPDATE爲200或204),該方法使用冪等MERGE查詢實現到數據庫。如何爲MERGE語句發送適當的HTTP狀態?
目前我的Java邏輯類似於以下
int affectedRows = customDataBasePackage.executeUpdatePreparedStatement(insertSql, insertParams);
if(affectedRows < 1) {
if(checkRowsSql == null || checkRowsParams == null) {
return Response.status(412).build();
} else {
return this.executeSELECTreturnJSON(checkRowsSql, checkRowsParams, 412, 409);
}
} else {
return Response.status(201).build();
}
的executeUpdatePreparedStatement(字符串,對象[])方法簡單地從在SQL過去了,參數映射得到一個PreparedStatement,然後執行PreparedStatement.executeUpdated ();
此外,我以這種方式實現PUT方法的原因是因爲此特定表的id列是用戶生成的,因此INSERT和UPDATE方法都必須是冪等的。這是我的理解,HTTP標準使用PUT進行冪等運算,POST使用非冪等創建。
感謝您花時間幫忙!
合併可以在同一語句(不只是一個或其他)中插入和更新行,因此如果沒有錯誤,那麼可能是200。 – tbone 2012-02-03 16:48:43
這就是我一直傾向於的,但如果有一些方法仍然使用MERGE語句,同時保持HTTP標準並將相關的200,201或204狀態發回給用戶,那將會很好。 – hypno7oad 2012-02-03 17:13:13