1

私のGAEアプリケーションには、JSON形式の応答を返すいくつかのリクエストハンドラーがあります。これらのいずれかが呼び出されたときにエラー(例外またはプログラミングエラー)が発生した場合、出力はJSONではなくスタックトレースです。

私が必要なのは:

Output without error:
{
    "foo" : 1
    "bar" : 2
    "status" : "OK"
}

Output when an error occurs:
{
    "status" : "ERR"
    "errorMessage" : "An error occurred!"
}

私の質問は次のとおりです。いずれにせよ、出力がJSON形式の応答になるようにするためのベストプラクティスは何ですか?もちろん、すべてのリクエストハンドラーに共通のソリューションは素晴らしいでしょう。

どんな助けでもいただければ幸いです。

4

2 に答える 2

2

確かに-ereporterクラス(ここで説明:https ://stackoverflow.com/a/4296664/336505 )を使用しますが、キャッチされなかった例外をJSON出力としてフォーマットするカスタムBaseHandlerを作成します。

class BaseHandler(webapp.RequestHandler):
    def handle_exception(self, exception, debug_mode):
      self.response.headers['Content-Type'] = 'application/json'
      self.response.out.write(etc, etc) # format the exception
于 2012-08-28T09:34:23.463 に答える
0

エラーが発生した場合、スタックトレースやその他の醜い出力を回避するには、試してみる必要があります...ただし、http://docs.python.org/tutorial/errors.html

例えば

try:
    # ... your code ...
except TypeError as e:
    # ... do something with this error type
except:
    # ... generic exception catchall
    # output that JSON response
于 2012-08-28T09:01:23.623 に答える