Implementing API exception flask-restful
我试图捕获当提供的URL是一个混乱和错误的URL时引发的异常,然后将错误响应返回为JSON。 这就是我为实现这个逻辑所做的。
当
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def url_error(status_code, message, reason): response = jsonify({ 'status': status_code, 'message': message, 'reason': reason }) response.status_code = status_code return response class RowColumnCount(Resource): def get(self, key_id): try: rc = Analysis(key_id=key_id) except S3ResponseError as e: return url_error(e.status, e.message, e.reason) json_response = json.loads(rc.count_rows_columns()) return json_response |
上面的代码工作正常,但它有点重复50个不同的资源类。 每个Resource类都应该处理这个特定的错误。 如何使它成为装饰器,以减少代码重复性。
我正在使用Flask,Flask-Restful,Python 3.4.3
有几种方法可以实现你想要做的事情,但我认为最干净的方法是扩展Resource类,如Flask-Restful文档中所述,并创建一个新的装饰器,其工作是捕获S3ResponseError和 返回适当的回复。 然后,您可以从新的基本Resource类中继承所有资源。
此外,我建议您指定一个API级别