如何使用Python Swagger客户端发送含二进制内容的POST请求
解决Swagger生成的Python客户端构造multipart/form-data请求体问题
第一步:读取XML文件为二进制数据
接口要求d1是binary类型,必须以二进制模式读取文件,避免编码问题:with open("path/to/your.xml", "rb") as xml_file: d1_binary = xml_file.read()第二步:构造请求体(两种方式二选一)
方式1:使用Swagger客户端生成的请求体模型
如果客户端根据OpenAPI定义生成了对应的请求体模型(比如命名类似XyzRequest或MultipartXyzBody),直接实例化模型并传入参数:from your_swagger_client.models import XyzRequest request_body = XyzRequest( d1=d1_binary, d2="valid@email.com" ) # 调用接口 api_response = my_api.xyz(body=request_body)方式2:直接构造字典(适用于未生成模型的情况)
如果客户端没有生成专用模型,直接构造包含两个字段的字典,确保d1是二进制数据,d2是符合格式的邮箱字符串:request_body = { "d1": d1_binary, "d2": "valid@email.com" } # 调用接口 api_response = my_api.xyz(body=request_body)注意事项
- 确认
d1的字段名和OpenAPI定义完全一致,大小写敏感 d2必须是非空的合法邮箱格式,否则接口会返回参数校验错误- 如果调用时报错,检查客户端是否自动处理了
multipart/form-data的Content-Type,部分Swagger生成的客户端会根据请求体类型自动设置头
- 确认
内容的提问来源于stack exchange,提问作者testo
相关产品推荐
相关产品推荐

