You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的Azure Function中读取并转换HTTP请求Payload

在Azure Function中读取并解析HTTP请求Payload的解决方案

一、先修复Payload的JSON语法错误

你提供的Payload存在多处JSON语法问题,这是解析失败的核心原因:

  • JSON要求所有字符串(包括键名)必须用双引号("),不能用单引号(')
  • Rows字段里的'{'gt':'3000'}'属于错误嵌套,应改为{"gt":"3000"}
  • join字段里的{Type :'default')括号不匹配,需修正为{"Type":"default"}

修复后的标准JSON Payload如下:

{
    "Tables": ["Table_Product", "Table_Sales"],
    "Cols": {
        "Table_Product": ["ProdId", "Prod_Name", "Prod_Desc"],
        "Table_Sales": ["ProdId", "Prod_Sales", "Prod_Qty"]
    },
    "Rows": {
        "Prod_Sales": {"gt": "3000"}
    },
    "Function": {
        "join": {"Type": "default"},
        "groupby": {"cols": ["ProdId", "Prod_Name", "Prod_Sales"]},
        "agg": {"Type": "Sum", "Value": "prod_sales"},
        "sortby": {"type": "Asc", "cols": ["prod_sales", "b"]}
    }
}

二、Azure Function中读取解析Payload的Python代码

以下是完整的Python版Azure Function代码,可直接接收HTTP请求并将Payload转换为Python字典结构:

import azure.functions as func
import json

def main(req: func.HttpRequest) -> func.HttpResponse:
    try:
        # 直接读取并解析请求体为Python字典
        req_body = req.get_json()
        
        # 示例:访问解析后的字段,用于业务处理
        target_tables = req_body["Tables"]
        group_config = req_body["Function"]["groupby"]
        
        # 这里添加你的业务逻辑代码
        return func.HttpResponse(
            "Payload解析完成,已转换为Python数据结构",
            status_code=200
        )
    except ValueError:
        # 处理JSON格式错误的情况
        return func.HttpResponse(
            "请求体不是有效JSON格式,请检查Payload",
            status_code=400
        )
    except KeyError as e:
        # 处理字段缺失的情况
        return func.HttpResponse(
            f"Payload缺少必要字段: {str(e)}",
            status_code=400
        )
    except Exception as e:
        # 处理其他异常
        return func.HttpResponse(
            f"解析过程出错: {str(e)}",
            status_code=500
        )

关键注意事项

  • 客户端发送请求时必须设置Content-Type: application/json请求头,否则req.get_json()会执行失败
  • 如果客户端发送的是原始字节或文本,可改用json.loads(req.get_body().decode('utf-8'))手动解析
  • 解析后的req_body是标准Python字典,直接通过键名即可访问对应值,比如req_body["Cols"]["Table_Product"]

内容的提问来源于stack exchange,提问作者Nason Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:42:39