Bottle让我可以使用Bottle.error
覆盖特定错误的处理程序,但是我正在制作JSON API,我想用一个处理程序覆盖 all 错误,以便返回JSON
如果可行,类似的事情将是最佳选择:
@bottle.error()
def error_handler(error):
# ...
不幸的是,除非我指定HTTP状态代码,否则处理程序将被忽略。
可以做到吗?
编辑:结果是该处理程序实际上并未被忽略,默认为500。但这与问题无关。
答案 0 :(得分:1)
我仔细查看了源代码,发现了默认的错误处理程序。没有子类,似乎没有一种方法可以覆盖它,所以这就是我最终得到的结果:
class JSONBottle(bottle.Bottle):
def default_error_handler(self, error):
return json.dumps({"error": "unexpected error"})
app = JSONBottle()
@app.error(404)
def error_404(error):
return json.dumps({"error": "resource not found"})
这会为JSON API设置合理的默认错误消息,并让我以后针对特定错误覆盖它。
答案 1 :(得分:0)
这是我当前正在使用的解决方法。这很丑,但是我还没有找到更好的方法。
let url = `https://developer.nps.gov/api/v1/parks?` +
`parkCode=${parkCode}&api_key=${apiKey}`;