Как показать пользовательские сообщения об ошибках API REST в клиенте JavaScript - PullRequest
0 голосов
/ 26 июня 2018

У меня Java REST API, сгенерированный с использованием swagger, в том случае, если клиент не авторизован, тогда я отправляю пользовательские сообщения об ошибках в ответ

    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();
    }   
}

Я вызываю этот API с помощью ajax следующим образом:

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

теперь, когда я вызываю этот API с помощью ajax, вызываю его без авторизации в заголовке, это дает мне 400 статусов, что нормально, как и ожидалось, но как мне получить объект ошибки, созданный с помощью Java?Может кто-нибудь, пожалуйста, скажите мне, как я могу получить этот объект ошибки в клиенте JavaScript?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Примерно так:

$.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*/})
    });
0 голосов
/ 26 июня 2018

Вы можете использовать функцию error, например

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

Где,

Объект jqXHR, textStatus - строка, описывающая тип возникшей ошибки инеобязательный объект исключения как errorThrown, если таковой возник.Таким образом, вы можете манипулировать statusCode и всем из этих параметров, например,

jqXHR.status == 400

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...