发布带有 curl -F 标志的嵌套参数


Posting nested params with curl -F flag

我正在尝试使用 django rest 框架将图像和一些嵌套参数发布到 api。我正在尝试设置一个带有 -F 标志的卷曲,如此处讨论,以及此处讨论的嵌套参数:

curl -X POST -S -H 'Accept: application/json' -F "customer[name]=foo&customer[email]=foo@bar.com&customer[zipcode]=1076AL&customer[city]=Amsterdam&customer[address]=foobar" -F "photo=@/Users/vincentvanleeuwen/Desktop/tmp/accord.jpg;type=image/jpg" http://localhost:8000/api/orders/

但我得到以下回应:

{"customer":{"city":["This field is required."],"email":["This field is required."],"zipcode":["This field is required."],"name":["This field is required."]}}

我在 -F 标志下的嵌套似乎有问题,因为如果我像这样发布嵌套变量,它会起作用:

curl -X POST -S -H "Content-Type: application/json" -d '{"customer":{"name":"Adriaan","email":"adriaan@adriaan.com","zipcode":"1901ZP","address":"caravan","city":"Verweggistan"}}' http://localhost:8000/api/orders/

知道我做错了什么吗?任何帮助将不胜感激!

尝试为每个参数使用单独的 -F 标志?来自卷曲手册:

模拟使用 -F 的填写表单。假设您填写三个字段 在表单中。一个字段是要发布的文件名,一个字段是您的 名称和一个字段是文件描述。我们要发布文件 我们写了名为"Cooltext.txt"。让 curl 做发布 这些数据而不是您喜欢的浏览器,您必须阅读 表单页的 HTML 源,并查找输入字段的名称。 在我们的示例中,输入字段名称为"文件"、"您的姓名"和 "文件描述"。

    curl -F "file=@cooltext.txt" -F "yourname=Daniel" '
         -F "filedescription=Cool text file with cool text inside" '
         http://www.post.com/postit.cgi