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

Jersey(REST)抛出异常并映射到HTTP错误或返回自定义错误代码?,rest,exception-handling,jersey,Rest,Exception Handling,Jersey,基本上,我编写了一个REST服务,我的业务逻辑要求我验证输入。例如,确保电话号码的格式为-。如果不是,则应返回无效的电话号码。此外,我还需要记录服务的所有操作。因此,当客户机查询系统时,他们可以找出最后一个操作是什么。即: 行动:添加-成功 操作:添加-无效的电话号码 所以现在我在想,是需要创建自己的自定义错误代码,还是只使用默认的HTTP错误代码,并在日志中记录这些错误代码 非常新的REST风格,所以如果我的逻辑不正确,请告诉我 所以我应该 public void callPerson(Str

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

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

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

非常新的REST风格,所以如果我的逻辑不正确,请告诉我

所以我应该

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

事实上,我还想确保状态也被记录下来。如果说操作有效,但状态更新无效,那就不好了。因此,更新状态应该是事务的一部分

还要记住的另一件事是REST服务一些操作必须与旧的面向消息的服务通信,其中响应和错误代码在XML响应消息中


有什么建议吗?谢谢

我建议使用HTTP状态代码412前置条件失败和字符串消息来说明错误。

酷!我想REST客户可以很容易地阅读这个?我更习惯于SOAP之前的面向消息的服务,其中请求和响应都是XML。因此,除了客户机得到HTTP 200 OK的响应之外,他们还需要解析XML响应并获得系统的状态代码。以及他们请求的其他信息。状态代码将不在XML正文中。REST资源产生3件事1。XML编码的表示形式或其他2。标题缓存,安全性。。。3.状态码。每个客户都能够获得这3个信息。在Java中,Jersey提供response.getStatus、response.getHeaders和response.getEntityPerson.class。仔细看,你会发现球衣为你做了解包;您不必解析响应。好吧,如果客户端是一个应用程序,它希望将412前置条件失败的电话号码无效存储到数据库中以供审计,该怎么办。getStatus将返回412如何获取电话号码无效值。基本上,我希望创建一个非常轻量级的XML web服务,而不需要使用SOAP等沉重的负担。。。REST似乎是对的,但现在我一直在使用HTTP错误代码,我无法映射自己的错误代码等等。是的,REST似乎适合您的目的。response.getEntityString.class足以获取412的消息。在某些情况下,错误消息嵌入到对象中,这取决于您。好吧,了解了这个问题,您是说我可以返回HTTP 412-电话号码无效,或者返回包含自定义代码的消息体的HTTP 200?还是包含自定义代码的消息体的HTTP 412?
public myStatusCode callPerson(String phone)
{
    try
      validate(phoneNumber)
      call person
    catch
        return myStatusCode
    finally
       record status to DB

}