2

Express ルーターと Multer ミドルウェアを使用して複数のボディ データとファイルを処理し、NODEjs で REST API を構築しています。

私のエンドポイント ルート 127.0.0.1/api/postData は次を期待しています: フィールドを持つ json データ。そのうちの 1 つは json オブジェクトの配列 (ネストされたマングース スキーマを持っています) と 2 つの名前付き画像 (png/jpg) です。

次の 5 つのオブジェクト データ構造を持つ cURL 経由で Post 要求を送信する必要があります。

name  String
description String
usersArray  Array of json objects like:   [{"id": "123"}, {"id": "456}]
imgIcon  Png/Image    providing  /path/to/imageIcon.png
imgHeader Png/Image     providing /path/to/imageHeader.png

request.js node http request library を使用してこのリクエストを作成する方法はありますか?

4

1 に答える 1

2

次のことを試してください。

request.post({
    url:'http://127.0.0.1:7777/api/postData'
    , formData: formData
    , qsStringifyOptions : {
        arrayFormat : 'brackets' // [indices(default)|brackets|repeat]
    }
}, function (err, httpResponse, body) {
 // do something...
}

https://www.npmjs.com/package/qs ( https://www.npmjs.com/package/request で使用)でarrayFormat の 3 つのオプションを見つけました。

'indices' sends in postbody: (this is the default case)
usersArray%5B0%5D%5Bid%5D=a667cc8f&usersArray%5B1%5D%5Bid%5D=7c7960fb
decoded:
usersArray[0][id]=a667cc8f&usersArray[1][id]=7c7960fb

'brackets' sends in postbody:
usersArray%5B%5D%5Bid%5D=a667cc8f&usersArray%5B%5D%5Bid%5D=7c7960fb
decoded:
usersArray[][id]=a667cc8f&usersArray[][id]=7c7960fb

'repeat' sends in postbody:
usersArray%5Bid%5D=a667cc8f&usersArray%5Bid%5D=7c7960fb
decoded:
usersArray[id]=a667cc8f&usersArray[id]=7c7960fb

これらは、ポストする前に配列をシリアル化する 3 つの異なる方法です。基本的に、これらをどのようにフォーマットする必要があるか、どのようにフォーマットできるかは、受信側によって異なります。私の場合、「ブラケット」を使用するのに役立ちました

于 2015-08-07T14:53:22.980 に答える