什么必须deleteItemreturn?
What must deleteItem return?
deleteItem
的文档说:
If deletion is asynchronous, method should return jQuery promise that will be resolved when deletion is completed.
这到底是什么意思?一定要承诺 return 任何数据吗?
下面的方法行得通吗?
deleteItem: function(item) {
return $.ajax("/api/members/", {
method: "DELETE",
data: { item: item},
error: (err) => { console.log(err);},
success: (result, status, jqXHR) => {},
})
}
以上在测试中对我有用,但我不确定如果 Ajax 调用成功就忽略是否正确。
如果您的业务逻辑可以容忍删除项目的失败,那么不处理它也没关系。
大多数情况下不是这样的,你应该处理删除item失败的情况,并适当的告诉用户这个失败,可以优雅的留言让他稍后再试。
关于"what must deleteItem return?":
成功时应该 return 状态码为 200,主体为空。
它应该 return 一个适当的 http 状态代码,带有适合失败原因的错误正文。
例如:如果您尝试删除的项目不存在,则状态代码错误 422(不可处理的实体)预计为 returned.
例如,如果您无权删除此项目,则应 return 编辑 403 状态代码错误。
总而言之,是的,您应该处理错误并告知用户。
您的代码应该类似于:
deleteItem: function(item) {
return $.ajax("/api/members/", {
method: "DELETE",
data: { item: item},
error: (jqXHR , err) => {
if(jqXHR.status == 403){
console.log("handle forbidden error code);
alert("You are not authorized to delete this item, check
with your manager...");
}
},
success: (result, status, jqXHR) => {},
})
}
deleteItem
的文档说:
If deletion is asynchronous, method should return jQuery promise that will be resolved when deletion is completed.
这到底是什么意思?一定要承诺 return 任何数据吗?
下面的方法行得通吗?
deleteItem: function(item) {
return $.ajax("/api/members/", {
method: "DELETE",
data: { item: item},
error: (err) => { console.log(err);},
success: (result, status, jqXHR) => {},
})
}
以上在测试中对我有用,但我不确定如果 Ajax 调用成功就忽略是否正确。
如果您的业务逻辑可以容忍删除项目的失败,那么不处理它也没关系。
大多数情况下不是这样的,你应该处理删除item失败的情况,并适当的告诉用户这个失败,可以优雅的留言让他稍后再试。
关于"what must deleteItem return?":
成功时应该 return 状态码为 200,主体为空。 它应该 return 一个适当的 http 状态代码,带有适合失败原因的错误正文。 例如:如果您尝试删除的项目不存在,则状态代码错误 422(不可处理的实体)预计为 returned.
例如,如果您无权删除此项目,则应 return 编辑 403 状态代码错误。
总而言之,是的,您应该处理错误并告知用户。
您的代码应该类似于:
deleteItem: function(item) {
return $.ajax("/api/members/", {
method: "DELETE",
data: { item: item},
error: (jqXHR , err) => {
if(jqXHR.status == 403){
console.log("handle forbidden error code);
alert("You are not authorized to delete this item, check
with your manager...");
}
},
success: (result, status, jqXHR) => {},
})
}