2017-08-04 14 views
0

として例外を発生させています。私は例外を発生させています。これをJSONとしてブラウザに出力します。Falcon - 私のアプリケーションのサービスレベルでjson

ドキュメントに記載されているように私はそれを実装:

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

とコンソールからの出力を:

TypeError: exceptions must derive from BaseException 

誰も前にこの問題を持っていたし、この1で私を助けることができますか?

ありがとうございました!

答えて

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

お返事ありがとうございました。もう1つの質問ですが、すべてのブラウザがjsonとjsonを優先フォーマットに対応していると、なぜyamlが必要ですか? 私はちょうど "resp.body = exception.to_json()"をしますか? –

+0

ブラウザには必要ありません。通常は、パワーユーザー向けに、Python、PHPなどを使用しています。 – kichik

関連する問題