Windows での cURL 使用について

APS のエンドポイントを説明する ドキュメントでは、リクエスト ヘッダーやリクエスト ボディを同時に確認出来る cURL を使った例を多数記載しています。Windows 10 以降、cURL が標準で搭載されて、すぐにコマンド プロンプト(cmd.exe)で使える環境が整っていることもあり、cURL でエンドポイントをテストしようとする方が増えているようです。

ただ、実際にコマンド プロンプトでエンドポイントを呼び出そうとすると、実行時に構文エラーになってしまい、うまくテスト出来ない状態になってしまうかもしれません。よくあるのは、リクエストで指定する JSON ボディで、キー名と値に使う (ダブル クォーテーション)が正しく認識されない、というものです。

ダブル クォーテーションを正しく認識させるためのは、 の前に (使用フォントにより円記号 ¥ で表示 のエスケープ文字を配置する必要があります。改行を省いた状態で Model Derivative API の POST job エンドポイントを呼び出す場合、次のような記述が必要になります。

curl --request POST --url https://developer.api.autodesk.com/modelderivative/v2/designdata/job --header "Content-Type: application/json" --header "Authorization: Bearer << ACCESS TOKEN >>" --data "{ "input": { "urn": "<< URN >>" }, "output": { "formats": [ { "type": "svf2", "views": [ "2d", "3d" ] } ] } }"

原因はわかったものの、これではリクエストの JSON ボディの値を変更したり、オプションを追加したりするのが厄介です。

このような場合、JSON ボディを UTF-8 形式の .json ファイルとして保存、cURL 構文で同ファイルを参照する方法をとることで、煩雑さを低減することが可能です。先の例で使用した POST job エンドポイントの場合、本来の記述のまま、リクエスト ボディを保存することが出来ます。(ここでは body.json

{
    "input": {
        "urn": "<< URN >>"
    },
    "output": {
        "formats": [
            {
                "type": "svf2",
                "views": [
                    "2d",
                    "3d"
                ]
            }
        ]
    }
}

あとは cURL 構文で、body.json ファイルを参照するようパス指定するだけです。次の例では、cd コマンドを使って現在のフォルダ(カレント ディレクトリ)を body.json ファイルのあるフォルダに変更して実行することを想定しています。

curl --request POST --url https://developer.api.autodesk.com/modelderivative/v2/designdata/job --header "Content-Type: application/json" --header "Authorization: Bearer << ACCESS TOKEN >>" --data "@body.json"

こうすると、リクエスト ボディの変更も少し楽になるはずです。

エンドポイントのテスト・評価には、もちろん、ユーザー インターフェースを持つ PostmanInsomnia のようなツールが使い易いのは言うまでもありません。

By Toshiaki Isezaki


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading