8

我在 djangorestframework 中制作了几个 api。这我可以使用 api 的 html 形式和命令行中的 curl 进行测试。

现在我有一个模型的 api,其中一个字段是 ImageField。

我不知道要使用哪个 curl 命令。使用我在以 json 格式发布操作之前使用的语法,它将是:

curl -X POST -S -H 'Content-Type: application/json' -u "username:password" --data-binary '{"otherfields":"something", "photo":"/home/michel/test.jpg"}' 127.0.0.1:8000/api/v1/

但在这种情况下,照片不会被保存并留空(照片是可选字段)

添加-T /home/michel/test.jpg 我收到一条错误消息,说 127.0.0.1:800/api/v1/test.jpg 不作为 url 存在。

在 djangorestframework 的测试 html 表单中,一切正常。

使用该-F选项,它说我一次只能执行 1 个请求...我还从 data-binary 中删除了数据类型

任何人都可以帮助我如何在 1 个命令中使用 json 中的图像和其他数据制作这个 curl 帖子。

4

1 回答 1

11

经过长时间的困惑,这似乎可以解决问题:

  • 将所有 json 参数放在单独的-F参数中
  • 只使用标题Accept(不是Content-Type
  • 并指定图像类型
  • 用于@指示要上传的本地文件

    curl -X POST -S \
      -H 'Accept: application/json' \
      -u "username:password" \
      -F "otherfields=something" \
      -F "photo=@/home/michel/test.jpg;type=image/jpg" \
      http://127.0.0.1:8000/api/v1/
    

顺便说一句,我知道所有这些都在 curl 的文档站点上,但只是错过了所有这些东西的示例,因为有很多选项可以尝试。

于 2012-07-13T08:32:23.910 回答