【问题标题】:Change response based on content type of request in Flask根据 Flask 中请求的内容类型更改响应
【发布时间】:2018-07-09 23:39:21
【问题描述】:

我有一个 Flask 应用程序,它返回 HTML 页面和对 API 请求的 JSON 响应。我想根据请求的内容类型更改错误处理程序返回的内容。如果客户端请求application/json,我想返回一个jsonify 响应,否则我想返回一个render_template 响应。如何检测请求的内容并适当更改响应?

我目前的错误处理程序只返回一个 HTML 响应。

def register_errorhandlers(app):
    """Register error handlers."""
    def render_error(error):
        """Render error template."""
        # If a HTTPException, pull the `code` attribute; default to 500
        error_code = getattr(error, 'code', 500)
        return render_template('{0}.html'.format(error_code)), error_code
    for errcode in [401, 404, 500]:
        app.errorhandler(errcode)(render_error)

【问题讨论】:

    标签: python flask


    【解决方案1】:

    使用request.content_type 获取客户端随请求发送的内容类型。使用request.accept_mimetypes 获取客户端表示它可以在响应中接受的mimetypes。使用这些来确定要返回的内容。

    from flask import request, jsonify, render_template
    
    if request.accept_mimetypes.accept_json:
        return jsonify(...)
    else:
        return render_template(...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-07
      • 2011-01-20
      • 2012-12-16
      • 1970-01-01
      • 2019-07-08
      • 2010-10-31
      • 2021-09-04
      • 2021-12-04
      相关资源
      最近更新 更多