python - 从cherrypy before_handler工具返回json

标签 python json cherrypy

我有一个cherrypy应用程序,其中我实现了一个自定义工具(请求过滤器),并将其附加到before_handler钩子(Hook)上。 下面是过滤器的实现:

def custom_filter():
    method = cherrypy.request.method
    if method == 'POST':
        print 'check POST token'
        try:
            request_headers = cherrypy.request.headers
            token = request_headers['Authorization']
            if not _auth.validate_token(token):
                    return 'error message'
        except:
            print 'Error in post filter'

我想要的是如果 token 无效,则向客户端返回一条消息。 return 语句不起作用。是否有可能做到这一点?如果没有,有其他选择吗?

最佳答案

基于this发布并经过一些调查后,我找到了一个适合我的解决方案:停止请求的执行,然后添加响应正文。

def custom_filter():
method = cherrypy.request.method
if method == 'POST':
    print 'check POST token'
    try:
        request_headers = cherrypy.request.headers
        token = request_headers['Authorization']
        if not _auth.validate_token(token):
                cherrypy.request.handler = None # stop request
                cherrypy.response.status = 403 
                cherrypy.response.body = 'test'  # add response message

    except:
        print 'Error in post filter'

关于python - 从cherrypy before_handler工具返回json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789389/

相关文章:

python - pandas - 根据数据框分组创建键值对

python - 使用 str.format_map() 时超出最大字符串递归

android - 在 Android 上解析/管理巨大 JSON 文件(~19MB)的最佳实践

sockets - App Engine 开发服务器 - 套接字协议(protocol)类型错误

python - 使用 Numpy 在元组列表之间进行外部减法

Python符号加载,覆盖控制台行

java - 为什么我的 jquery ajax 给出 406

python - 通过 Flask 应用程序的 Cherrypy 调度获取正确的静态 URL

python-3.x - CherryPy:如何将路由限制为仅 POST

python - 良好的 Django 示例/教程/书籍开始?