Flask400
异常 ( abort()
) 的默认消息是:
{
"message": "The browser (or proxy) sent a request that this server could not understand."
}
对于404
:
{
"message": "The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again. You have requested this URI [/obj/] but did you mean /obj/ or /obj/<int:id>/ or /obj/<int:id>/kill/ ?"
}
当我在我的 API 中将这些消息作为回复获取时,我很难理解这些消息(尤其是第一个,我认为加密或标头有问题),而且我认为尝试手动覆盖每个abort()
异常的文本有点令人厌烦。所以我改变了映射:
from flask import abort
from werkzeug.exceptions import HTTPException
class BadRequest(HTTPException):
code = 400
description = 'Bad request.'
class NotFound(HTTPException):
code = 404
description = 'Resource not found.'
abort.mapping.update({
400: BadRequest,
404: NotFound
})
对于它的情况,400
它工作得很好。但是当涉及到404
它时,它仍然是相同的信息。abort(400)
我在我的代码中的同一个地方测试了它——它适用abort(403)
于abort(404)
. 调试没有太大帮助。这里的罪魁祸首可能是什么?
更新。是的,我使用的abort
是从flask
not导入的,flask_restful
因为后者没有映射,它是一个函数而不是一个Aborter
对象。此外,它确实适用于大多数例外情况,所以这可能不是真正的问题。
更新 2。执行abort.mapping
起来似乎完全没问题。有问题的例外被覆盖,包括404
.
更新 3:我整理了一个小沙箱,用于调试。(由于谜团早已解决,因此删除了回购协议)。