2017-08-04 81 views
0

在我的应用程序的服务级别,我提出了一个异常,我希望它被打印为浏览器的JSON。Falcon - 将异常提升为json

我实现它的文档中所述:

raise falcon.HTTPError(
    '12345 - My Custom Error', 
    'some text' 
).to_json() 

而且从控制台输出:

TypeError: exceptions must derive from BaseException 

任何人都收到这个问题,可以帮助我这个吗?

感谢和问候!

回答

1

你试图提高一个字符串。正确的方法是使用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) 
+0

哎谢谢你的回答,太棒了:)还有一个问题,为什么我需要yaml时,每个浏览器都支持json和json它的首选格式? 不能我只是做“resp.body = exception.to_json()”? –

+0

你不需要浏览器。通常你会用python,php等方式给高级用户。 – kichik