【问题标题】:How to handle and report to client Web Service Exceptions?如何处理并向客户端报告 Web 服务异常?
【发布时间】:2019-06-12 20:06:33
【问题描述】:

我有两个应用程序。一个 spring-boot web 服务和另一个使用它的服务。我不确定如何处理异常并将它们报告给客户端。

暴露网络服务的方法:

//web service com springboot
    @PostMapping(value = "/save", produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE},
                    consumes = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
    public Pessoa save(@RequestBody Pessoa pessoa) {    
        // email field is unique, might throw constraint violation...   
            return pessoaRepository.save(pessoa);               
    }

以及使用它的客户端应用程序(没有 spring,只有 javaEE Client API):

public Pessoa savePessoa(Pessoa pessoa) {
    Client client = ClientBuilder.newClient();
    WebTarget target = client.target(URL_WS+ "/save");

    Entity<Pessoa> data = Entity.entity(pessoa, MediaType.APPLICATION_XML_TYPE);

    pessoa = target.request(MediaType.APPLICATION_XML_TYPE).post(data, Pessoa.class);

    return pessoa;
}

Pessoa的email字段是唯一的,保存时会触发一些违反约束的异常。 如果出现异常,我该如何正确地向客户报告?

【问题讨论】:

    标签: java rest spring-boot exception-handling client-applications


    【解决方案1】:

    创建异常类

    public class PessoaException extends RuntimeException { 
       public PessoaException(String exception) {
        super(exception);
          }
        }
    

    如下更改您的服务代码:-

     @PostMapping(value = "/save", produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE},
                        consumes = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
        public Pessoa save(@RequestBody Pessoa pessoa) {    
            // email field is unique, might throw constraint violation... 
                try{
                Pessoa p = pessoaRepository.save(pessoa);
                }catch(Exception e){
                    throw new PessoaException("Message" + e);
                }   
                return p;               
        }
    

    【讨论】:

    • 谢谢!以及客户端如何检查发送的对象是否成功持久化?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多