2012-02-03 62 views
1

我正在为我们的一个数据模型(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使用非幂等创建。

感谢您花时间帮忙!

+0

合并可以在同一语句(不只是一个或其他)中插入和更新行,因此如果没有错误,那么可能是200。 – tbone 2012-02-03 16:48:43

+0

这就是我一直倾向于的,但如果有一些方法仍然使用MERGE语句,同时保持HTTP标准并将相关的200,201或204状态发回给用户,那将会很好。 – hypno7oad 2012-02-03 17:13:13

回答