【问题标题】:how to show custom REST API error messages in javascript client如何在 javascript 客户端中显示自定义 REST API 错误消息
【发布时间】:2018-12-04 18:43:43
【问题描述】:

我使用 swagger 生成了 Java REST API,如果客户端未经授权,那么我将发送自定义错误消息作为响应

    public Response collaborationCollabIdDelete(Integer collabId, SecurityContext securityContext, String authBase64String) throws NotFoundException {
    // do some magic!
    ErrorRequestObject erb;
    ArrayList <ErrorRequestObject> erbs = new ArrayList<ErrorRequestObject>();

    if (authBase64String == null)
    {   
        erb = new ErrorRequestObject(); erb.setError("Missing Authorization in Header"); erb.setPath("Header:Authorization"); 
        erb.setProposedSolution("Authorization Header should contain user:pwd:nhPath as Base64 string");
        erbs.add(erb);
    }
    if (erbs.size() == 0)
    {
            //success code here
    }
    else
    {
        return Response.status(400).entity(erbs).build();
    }   
}

我使用ajax调用这个API如下,

$.ajax({
            url : URL,
            type : "DELETE",
            dataType : "json",
            contentType : "application/json",
            async : false,
            success : function(result){         
                Response.resolve(result);
                console.log("Response  : " + JSON.stringify(result));
               }
        });

现在,当我使用 ajax 调用此 API 时,在标题中未经授权就调用它时,它会给我 400 状态,这与预期的一样好,但是我如何获取使用 java 创建的错误对象?谁能告诉我如何在 javascript 客户端获取此错误对象?

【问题讨论】:

    标签: javascript java rest swagger


    【解决方案1】:

    类似这样的:

    $.ajax({
            url : URL,
            type : "DELETE",
            dataType : "json",
            contentType : "application/json",
            async : false,
            success : function(result){         
                Response.resolve(result);
                console.log("Response  : " + JSON.stringify(result));
               }, 
            error: function(err) { /* your code here*/})
        });
    

    【讨论】:

    • 谢谢! Kasabucki 为您解答。这对我来说完全没问题。
    • 当我执行 err.responseJSON[0] 时,我得到了我的自定义错误对象。
    【解决方案2】:

    你可以像使用error函数

    error: function(jqXHR, textStatus, errorThrown) {
      console.log(textStatus, errorThrown);
    }
    

    在哪里,

    jqXHRobject, textStatus - 一个描述发生错误类型的字符串和一个可选的异常对象errorThrown,如果发生了错误。因此,您可以操作 statusCode 以及来自此参数的所有内容,例如,

    jqXHR.status == 400

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      相关资源
      最近更新 更多