我有使用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客户端获取此错误对象?
答案 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