在我的应用程序的服务级别,我正在引发一个异常,我希望它作为JSON打印到浏览器。
我按照文档中的说明实现了它:
raise falcon.HTTPError(
'12345 - My Custom Error',
'some text'
).to_json()
控制台的输出:
TypeError: exceptions must derive from BaseException
以前有人遇到过这个问题,可以帮助我解决这个问题吗?
你正在尝试引发一个字符串。正确的方法是使用 set_error_serializer((。
文档中的示例似乎正是您所需要的(加上 YAML 支持(。
def my_serializer(req, resp, exception):
representation = None
preferred = req.client_prefers(('application/x-yaml',
'application/json'))
if preferred is not None:
if preferred == 'application/json':
representation = exception.to_json()
else:
representation = yaml.dump(exception.to_dict(),
encoding=None)
resp.body = representation
resp.content_type = preferred
resp.append_header('Vary', 'Accept')
app = falcon.API()
app.set_error_serializer(my_serializer)
创建自定义异常类 在 falcon 文档中解释,搜索add_error_handler
class RaiseUnauthorizedException(Exception):
def handle(ex, req, resp, params):
resp.status = falcon.HTTP_401
response = json.loads(json.dumps(ast.literal_eval(str(ex))))
resp.body = json.dumps(response)
将自定义异常类添加到猎鹰 API 对象
api = falcon.API()
api.add_error_handler(RaiseUnauthorizedException)
导入自定义异常类并传递消息
message = {"status": "error", "message" : "Not authorized"}
RaiseUnauthorizedException(message)