在POST请求时,执行一个临时凭证

2024-05-05 21:54:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的post请求端点。在

一旦用户创建了如下所示的post请求,我想执行一个python脚本(比如测试.py). 在

[
    {
        "sign": "53535",
    },
    {
        "sign": "42122",
    }
]

当post请求进来时,单独执行脚本的最佳方法是什么?然后,当新的post请求(如下面所示的12323)出现时,我想再次单独运行一个python脚本。在

^{pr2}$

Tags: 方法用户py脚本端点postsignpr2
2条回答

您可以尝试通过应用Middleware来接受特定的请求

例如,您可以使用MiddlewareJSON Schema来拦截特定的请求并触发所需的脚本。在

from jsonschema import validate
class CustomMiddleware(object):
    JSON_SCHEMA={
        "type": "array",
        "items": {
            "type" : "object",
            "properties" : {
              "sign" : {
                "type" : "number"
              }
         }  
    }
    def process_request(self, request):
        if 'application/json' in request.META['CONTENT_TYPE'] and  request.method == 'POST':
            data = request.body
            try:
                validate(data, self.JSON_SCHEMA)
                # Schema is valid invoke your hooks
            except jsonschema.exceptions.ValidationError as ve:
                # proceed request further

但如果您需要在请求之间保存状态,最好使用session来处理这种情况

另外,不要忘记在您的settings.py中添加这个中间件,如下所示

^{pr2}$

默认情况下,中间件捕获所有请求,因此您需要在process_request函数中过滤请求。在

JSONSchema用于减少验证请求的if-else语句的数量,您可以根据自己的需要定义不同的规则,只需声明性的,而不是命令式的。这确实使代码更具可读性和灵活性。您不应该使用JSONSchema这只是验证请求的一种可能方法。在

可能是老套的解决方案:

  1. 定义一些自定义的Middleware,它使用stdlib中的子进程触发脚本。

  2. 使用decorator_from_middleware创建一个装饰器,以允许分配给各个端点

  3. 将decorator分配给接收更新的API端点。

每次命中端点时,中间件都会运行,并触发调用.py文件的子进程。在

相关问题 更多 >