首页 文章

根据Flask中的请求内容类型更改响应

提问于
浏览
0

我有一个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)

1 回答

  • 0

    使用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(...)
    

相关问题