Request: إرسال نص حمولة JSON في الطلب

تم إنشاؤها على ٦ أغسطس ٢٠١٥  ·  7تعليقات  ·  مصدر: request/request

أهلاً،

أرغب في معرفة كيفية إرسال هذا الهيكل:

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

في طلب PUT.
أنا أقوم بتطوير عميل مسبك السحابة لـ Node.js ولدي هذا الشك.

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

لدي هذا الطلب:

    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);
        });
    });

لكن سؤالي هو كيفية إضافة JSON إلى الطلب.

ما هي أفضل طريقة؟

شكرا كثيرا مسبقا.

خوان انطونيو

التعليق الأكثر فائدة

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

ال 7 كومينتر

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

أهلاً،

لقد اختبرت الفكرة ، لكنني أتلقى الخطأ التالي:

Error: Error: Argument error, options.body.

الكود الكامل:

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);
        });
    });
}

في أي خيار ، يجب أن ألحق: { body: JSON.stringify ({object})} في الطلب؟

انا استخدم:

"طلب": "^ 2.45.0"

كلا ، فقط {body:JSON.stringify({object})} - _string_. تأكد أيضًا من أنك تستخدم أحدث إصدار من الطلب.

شكرا جزيلا ، إنه يعمل بشكل جيد!

يرجى ملاحظة أن هذا قد تغير ووفقًا لقسم README المتعلق بـ options ، يجب أن يكون بدلاً من ذلك request({body: <JSON-serializable-object>, json: true, url:...}) وليس الكائن _stringified_ المذكور أعلاه عندما يكون json صحيحًا . لقد وجدت هذا مربكًا عند خلط الطلبات في الكود الخاص بي.

سأضيف إلى هذا ، لأن لدي مشكلة مماثلة. كنت بحاجة إلى عدم التفاف قيمة "الجسم" في الخيارات مع الأقواس الكائن. لذلك كان هذا هو الكود الخاص بي:

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)...
}

أستخدم طلب http nodejs

يتغيرون
request.write(JSON.stringify(data));
ل
request.write(JSON.stringify({body: data}));

إنه عمل بالنسبة لي

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

jasonxia23 picture jasonxia23  ·  3تعليقات

Guymestef picture Guymestef  ·  3تعليقات

ghost picture ghost  ·  3تعليقات

codecowboy picture codecowboy  ·  3تعليقات

mlegenhausen picture mlegenhausen  ·  4تعليقات