如何使用RestClient将哈希数据以form-data格式发送至Flask接口
问题原因
你当前的写法存在2个核心错误,导致服务端无法正常解析表单参数:
- payload多嵌套了一层
data字段,导致所有表单参数都被包裹在data节点下 multipart参数位置错误,且手动指定了无boundary的multipart/form-data头部,破坏了表单格式的自动生成
正确代码示例
RestClient::Request.execute( method: :post, url: url, # multipart参数与method、url平级,标识使用form-data格式 multipart: true, # 表单字段直接放在payload第一层,不要额外嵌套 payload: { "user": "test", "phase": "test", "job_id": "test" }, headers: { Authorization: 'Basic ' + Base64.encode64(auth_details) # 不需要手动指定Content-Type,RestClient会自动生成带boundary的合法multipart头部 } )
附加说明
如果你的接口不需要上传文件,只是传输纯文本表单参数,也可以直接使用默认的application/x-www-form-urlencoded格式,写法更简洁,同样能被Flask的request.form正常读取:
RestClient.post( url, { user: "test", phase: "test", job_id: "test" }, { Authorization: 'Basic ' + Base64.encode64(auth_details) } )
内容的提问来源于stack exchange,提问作者Leero11
相关产品推荐
相关产品推荐

