You need to enable JavaScript to run this app. Flask中如何将Postman发起的XML格式POST请求体转换为字典
优惠活动
大模型
产品
解决方案
定价
更多

Flask中如何将Postman发起的XML格式POST请求体转换为字典

Flask 处理XML格式POST请求解决方案

核心疑问解答

  1. Flask 没有内置类似get_json()的XML解析方法,但POST请求体完全不限制只能用JSON格式,只要客户端正确设置对应Content-Type,服务端都可以自行解析处理。
  2. 你代码中空缺的属性为data,request.data用于获取未被Flask默认解析器处理的原始请求体字节内容,刚好可以直接传入xmltodict.parse()使用。

具体实现步骤

1. 安装依赖

首先确保你已经安装了xmltodict库:

pip install xmltodict

2. 基础解析写法

你给出的待补全代码修正后如下:

import xmltodict
from flask import Flask, request

app = Flask(__name__)

@app.route("/test/", methods=["POST"])
def handle_xml_request():
    # 校验请求格式是否为XML
    if not request.is_xml:
        return {"err_msg": "仅支持Content-Type为application/xml的请求"}, 400
    # 解析XML为字典
    content = xmltodict.parse(request.data)
    # 测试返回解析结果,此时content['root']['name']即可拿到对应字段值
    return {"parse_result": content}

3. 扩展:封装类似get_json的通用方法

如果需要频繁处理XML请求,可以自行封装工具方法简化调用:

def get_xml(dict_constructor=dict):
    """封装XML解析方法,用法和get_json一致"""
    if not request.is_xml:
        return None
    try:
        return xmltodict.parse(request.data, dict_constructor=dict_constructor)
    except:
        # 非法XML格式返回空
        return None

调用方式和get_json()完全一致:

content = get_xml()

注意事项

  • 若不需要有序字典,可在解析时添加dict_constructor=dict参数,直接返回Python普通字典
  • 生产环境使用时建议添加XML格式异常捕获,避免恶意请求导致服务报错
  • 针对带自定义命名空间的XML格式,可以调整xmltodict的process_namespaces参数适配处理

内容的提问来源于stack exchange,提问作者Aniket Pathak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 08:06:03