Flask 使用 MethodView 编写视图类并记录请求参数
根据您的描述,您想要使用MethodView来定义一个视图类,并在get方法中打印请求参数。您还想在before_request装饰器中记录请求的参数和主体。\n\n首先,您需要导入必要的模块和类:\n\npython\nfrom flask import request, jsonify\nfrom flask.views import MethodView\n\n\n然后,您可以定义一个视图类:\n\npython\nclass UploadHelloView(MethodView):\n def get(self):\n print("get=", request.args)\n return "hello+get"\n\n\n接下来,您可以在应用程序中将此视图类与路由关联起来:\n\npython\nfrom flask import Flask\n\napp = Flask(__name__) \n\napp.add_url_rule('/hello', view_func=UploadHelloView.as_view('upload_hello'))\n\n\n最后,您可以使用before_request装饰器来记录请求的参数和主体:\n\npython\n@app.before_request\ndef log_request_body():\n app.logger.info('Record Request Information Start ...')\n if request.args:\n app.logger.info(f'Request Args: {dict(request.args)}')\n if request.json:\n app.logger.info(f'Request Body is {request.json}')\n app.logger.info('End of recording request information ...')\n\n\n请注意,before_request装饰器将在每个请求之前执行,因此您将在日志中记录所有请求的参数和主体信息。\n\n关于您提到的"Unsupported Media Type"错误,这是因为MethodView默认期望请求的内容类型为JSON。如果您只想接受GET请求,并且不需要请求的主体,请按照以下方式修改UploadHelloView类:\n\npython\nclass UploadHelloView(MethodView):\n def get(self):\n print("get=", request.args)\n return "hello+get"\n \n def post(self):\n return jsonify({'message': 'Unsupported Media Type'}), 415\n\n\n这将使视图类只接受GET请求,并且对于其他请求(如POST)返回"Unsupported Media Type"错误。\n\n希望这可以解决您的问题!
原文地址: https://www.cveoy.top/t/topic/pWEm 著作权归作者所有。请勿转载和采集!