Я работаю над RESTful API для одной из наших моделей данных (Oracle) на работе и внедряю ее с JAX-RS (аннотации Java6). Проблема, на которую я надеюсь получить руководство, заключается в том, как вернуть соответствующий метод HTTP Status (201 для INSERT; 200 или 204 для UPDATE) после успешного завершения метода PUT, который реализуется с помощью идемпотентного запроса MERGE к базе данных. .
В настоящее время моя логика 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 (String, Object []) просто получает PreparedStatement из переданного в sql, сопоставляет параметры и затем выполняет PreparedStatement.executeUpdated ();
Кроме того, причина, по которой я реализую свой метод PUT таким способом, заключается в том, что столбец id этой конкретной таблицы генерируется пользователем, поэтому методы INSERT и UPDATE должны быть идемпотентными. Насколько я понимаю, стандарт HTTP использует PUT для идемпотентных операций и POST для неидемпотентного создания.
Спасибо, что нашли время помочь!