Tamim Fahed نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 لدي الكود التالي من طرف خادم الويب node.js وأقوم باستخدام express.js: var express = require('express') var bodyParser = require('body-parser') var app = express() app.use(bodyParser.urlencoded()) app.use(bodyParser.json()) app.listen(5000); app.post("/", function (req, res) { console.log(req.body) res.send('Hello World!') }); ولكن أحصل على body فارغ عند طباعته في console.log. كيف يمكنني حل هذه المشكلة؟ 1 اقتباس
0 محمد أبو عواد نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 في Postman من بين الخيارات الثلاثة المتاحة لنوع المحتوى ، حدد "X-www-form-urlencoded" وسوف يعمل, أيضا للتخلص من رسالة الخطأ ، استبدل: app.use(bodyParser.urlencoded()) بالكود التالي app.use(bodyParser.urlencoded({ extended: true })); اقتباس
1 Sam Ahw نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 إن الوسيط body-parser يقوم فقط بالتعامل مع البيانات من نمط JSON و urlencoded data، ولا يستطيع معالجة البيانات في حال كانت من الشكل multipart على سبيل المثال الفورم الذي يحوي أي صور أو ملفات مع بيانات أخرى. ولكن بدءً من النسخ الحديثة من express أصبح body-parser مبني ضمنياً ضمنه ولا داعي لوضع السطر السابق في الكود الخاص بتعريف خادم الويب لديك. لذلك يمكنك اختصار هذه المرحلة. يمكنك بدلاً من ذلك استخدام التالي: app.use(express.json()); وعندها سيتم التعامل مع النسخة الحديثة من JSON bodies. أما للمسارات المرمزة من خلال الجسم body ضمن الطلب وفي مثالنا الطلبات من نوع Post بنمط HTTP، يمكنك وضع السطر التالي ضمن الكود: app.use(express.urlencoded()) أما في حال كانت الطلبات مقتصرة على postman دون وجود كود برمجي كامل (طرف الخادم + طرف العميل من خلال ajax أو غيرها من التقنيات)، يمكنك تحديد النوع raw ضمن الطلب وإضافة التالي ضمن الخيارات: Content-Type: application/json ثم يمكنك كتابة البيانات المراد تمريرها إلى الخادم مع التأكد من إحاطة اسماء المتغيرات بعلامة تنصيص مزدوجة والمحافظة على هيئة json وإلا لن يتم إرسال الطلب بالشكل الصحيح: { "name": "test" } أما في الحالات التي يتم فيها استخدام بيانات mutlipart، وفي حال كنت تستخدم وسيط مثلاً لرفع الملفات كما هو الحال في multer في node.js، يجب عليك التأكد من تعريف الوسيط وخصائصه بالشكل الصحيح واستخدامه قبل طباعة محتوى الطلب وإلا ستحصل أيضاً على body فارغ حتى لو قمت بتطبيق جميع الطرق السابقة. اقتباس
0 محمد أيت لعرايك نشر 14 يوليو 2021 أرسل تقرير نشر 14 يوليو 2021 يمكنك إختبار الكود الخاص بك باستخدام Postman ، لاختبار إجراءات نشر HTTP مع حمولة بيانات JSON الأولية ، حدد الخيار الأولي واضبط معلمات الرأس التالية: Content-Type: application/json تأكد أيضًا من التفاف أي strings مستخدمة كمفاتيح / قيم في حمولة JSON في علامتي اقتباس كهذه " ". هكذا ستقوم حزمة body-parser بتحليل حمولات JSON الخام متعددة الأسطر بشكل جيد. { "foo": "bar" } بعد ذلك بجب تكوين التطبيق لاستخدام ()bodyParser var express = require('express'); var app = express(); var bodyParser = require('body-parser'); // bodyParser() إستخدام app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); // ... أكتب الموجهات الأخرى منا اقتباس
السؤال
Tamim Fahed
لدي الكود التالي من طرف خادم الويب node.js وأقوم باستخدام express.js:
var express = require('express') var bodyParser = require('body-parser') var app = express() app.use(bodyParser.urlencoded()) app.use(bodyParser.json()) app.listen(5000); app.post("/", function (req, res) { console.log(req.body) res.send('Hello World!') });
ولكن أحصل على body فارغ عند طباعته في console.log. كيف يمكنني حل هذه المشكلة؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.