如何在JavaScript客户端中显示自定义REST API错误消息

时间:2018-06-26 06:29:11

标签: javascript java rest swagger

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

find()

我使用ajax如下调用此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时,如果没有在标题中进行授权,它就会给我400的状态,这可以按预期进行,但是我如何获得使用Java创建的错误对象?谁能告诉我如何在javascript客户端获取此错误对象?

2 个答案:

答案 0 :(得分: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*/})
    });

答案 1 :(得分:0)

您可以像

一样使用error函数
error: function(jqXHR, textStatus, errorThrown) {
  console.log(textStatus, errorThrown);
}

在哪里

jqXHR对象textStatus-一个字符串,描述发生的错误的类型,可选的异常对象为errorThrown(如果发生)。因此,您可以操纵statusCode以及该参数中的所有内容,例如

jqXHR.status == 400