Flask中如何将Postman发起的XML格式POST请求体转换为字典
Flask 处理XML格式POST请求解决方案
核心疑问解答
- Flask 没有内置类似
get_json()的XML解析方法,但POST请求体完全不限制只能用JSON格式,只要客户端正确设置对应Content-Type,服务端都可以自行解析处理。 - 你代码中空缺的属性为
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
相关产品推荐
相关产品推荐

