Jersey(REST)抛出异常并映射到HTTP错误或返回自定义错误代码?

时间:2011-10-24 17:40:17

标签: rest exception-handling jersey

基本上我写了一个REST服务,我的业务逻辑要求我验证输入。例如,确保电话号码的格式为(###)### - ####。如果不是,则应返回无效的电话号码。我还需要记录服务的所有操作。因此,当客户端查询系统时,他们可以找出最后一个操作是什么。我:

行动:添加 - 成功 行动:添加 - 无效电话号码

所以现在我在想我是否需要创建自己的自定义错误代码或只使用默认的HTTP代码并在“日志”中记录这些代码

REST风格的新手,所以如果我的逻辑关闭,请告诉我......

我应该......

public void callPerson(String phone)
{
    try
      validate(phoneNumber)
      call person
    catch
        throw Invalid Phone Number
    finally
       record status to DB
}

public myStatusCode callPerson(String phone)
{
    try
      validate(phoneNumber)
      call person
    catch
        return myStatusCode
    finally
       record status to DB

}

事实上,我也希望确保状态得到记录以及其他方面,如果说行动有效但状态更新没有,那就不好了。因此,更新状态应该是“交易”的一部分

另外要记住这个REST服务的一些事情,一些操作必须与较旧的“面向消息”的服务进行通信,其中响应和错误代码在XML响应消息中...

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:0)

我建议使用HTTP状态代码412(Precondition Failed)和错误的String消息。