使用curl -F标志发布嵌套参数

时间:2015-03-12 01:18:24

标签: php django api rest curl

我正在尝试使用django rest框架将图像和一些嵌套参数发布到api。我正在尝试使用嵌套参数{-3}将-F标志as discussed here设置为卷曲:

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/

任何想法我做错了什么?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

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

  

使用-F模拟填充表单。假设你填写了三个字段   在一种形式。一个字段是要发布的文件名,一个字段是您的   name和一个字段是文件描述。我们想发布文件   我们写的名为“cooltext.txt”。让curl发布   这个数据而不是你最喜欢的浏览器,你必须阅读   表单页面的HTML源代码并找到输入字段的名称。   在我们的示例中,输入字段名称为“file”,“yourname”和   'filedescription'。

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