8

djangorestframework でいくつかの API を作成しました。これにより、コマンドラインのcurlと同様に、APIのhtml形式で両方をテストできました。

これで、フィールドの 1 つが ImageField であるモデルへの API ができました。

使用する curl コマンドがわかりません。json 形式の fot post アクションの前に使用した構文を使用すると、次のようになります。

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 からデータ型を削除しました

画像とjsonの他のデータの両方を1つのコマンドで使用して、この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 に答える