Request: Kirim badan muatan JSON dalam permintaan

Dibuat pada 6 Agu 2015  ·  7Komentar  ·  Sumber: request/request

Hai,

Saya ingin tahu cara mengirim struktur ini:

[
  {
    "sha1": "3722059cc37f7a56db064c1911f063da826cb211",
    "size": 36
  },
  {
    "sha1": "a9993e364706816aba3e25717850c26c9cd0d89d",
    "size": 1
  }
]

Dalam permintaan PUT.
Saya sedang mengembangkan klien pengecoran Cloud untuk Node.js dan saya ragu.

http://apidocs.cloudfoundry.org/214/resource_match/list_all_matching_resources.html

Saya memiliki permintaan ini:

    var url = this.API_URL + "/v2/resource_match";  
    var headers = {
        'Accept': 'application/json',
        'Authorization': token_type + " " + access_token,
        'Content-Type': 'application/x-www-form-urlencoded'
    };
    return new Promise(function (resolve, reject) {
        request.put({url:url, headers: headers}, function optionalCallback(err, httpResponse, body) {
            if (err) {
                console.error('upload failed:', err);
                return reject(error);
            }
            console.log('Upload successful!  Server responded with:', body);
            return resolve(body);
        });
    });

tetapi pertanyaan saya adalah bagaimana menambahkan JSON ke permintaan.

Apakah cara terbaiknya?

Banyak terima kasih sebelumnya.

Juan Antonio

Komentar yang paling membantu

{body:JSON.stringify({object})}

Semua 7 komentar

{body:JSON.stringify({object})}

Hai,

Saya telah menguji idenya, tetapi saya menerima kesalahan berikut:

Error: Error: Argument error, options.body.

Kode lengkap:

HttpUtils.prototype.DEBUG = function(method,url,headers,qs,body,httpStatusAssert){

    var resources = [
        {
            "sha1": "3722059cc37f7a56db064c1911f063da826cb211",
            "size": 36
        },
        {
            "sha1": "a9993e364706816aba3e25717850c26c9cd0d89d",
            "size": 1
        }];

    var options = {
      method: 'PUT',
      url: url,
      headers: headers,
      body: {body:JSON.stringify(resources)}
    };

    return new Promise(function (resolve, reject) {
        request(options, function (error, response, body) {
            if(error){
                return reject(error);
            }
            console.log(body);
            return resolve(body);
        });
    });
}

Dalam opsi apa, saya harus menambahkan: { body:JSON.stringify ({object})} dalam permintaan?

Saya menggunakan:

"permintaan": "^2.45.0"

Tidak, hanya {body:JSON.stringify({object})} - _string_. Pastikan juga Anda menggunakan permintaan versi terbaru.

Terima kasih banyak, ini berjalan dengan baik!

Harap dicatat, ini telah berubah dan per bagian README yang terkait dengan options seharusnya request({body: <JSON-serializable-object>, json: true, url:...}) dan bukan objek _stringified_ yang disebutkan di atas ketika json true . Saya menemukan ini membingungkan ketika mencampur permintaan dalam kode saya.

Saya akan menambahkan ini, karena saya memiliki masalah serupa. Saya tidak perlu membungkus nilai "tubuh" dalam opsi dengan kawat gigi objek. Jadi ini adalah kode saya yang valid:

var solution = [ {"x": 0, "y": 0}, {"x": 1, "y": 0},
{"x": 2, "y": 0},
{"x": 2, "y": 1},
{"x": 2, "y": 2},
{"x": 3, "y": 2},
{"x": 3, "y": 3}
]
var options = {
method: 'POST',
url: url,
headers: headers,
body: solution
};

rp(options)...
}

Saya menggunakan permintaan http nodejs

Mengubah
request.write(JSON.stringify(data));
Ke
request.write(JSON.stringify({body: data}));

Ini bekerja untuk saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat