احصل على بيانات نص طلب HTTP باستخدام Node

تعرف على كيفية استخراج البيانات المرسلة بتنسيق JSON من خلال نص طلب HTTP باستخدام Node

إليك كيفية استخراج البيانات التي تم إرسالها بتنسيقجسونفي نص الطلب.

إذا كنت تستخدم Express ، فهذا بسيط للغاية: استخدم ملحقbody-parserوحدة العقدة.

على سبيل المثال ، للحصول على نص هذا الطلب:

const axios = require('axios')

axios.post(’/todos’, { todo: ‘Buy the milk’, })

هذا هو الكود المطابق من جانب الخادم:

const bodyParser = require('body-parser')

app.use( bodyParser.urlencoded({ extended: true, }) )

app.use(bodyParser.json())

app.post(’/endpoint’, (req, res) => { console.log(req.body.todo) })

إذا كنت لا تستخدم Express وتريد القيام بذلك في Vanilla Node ، فأنت بحاجة إلى القيام بالمزيد من العمل ، بالطبع ، لأن Express يستخلص الكثير من هذا من أجلك.

الشيء الأساسي الذي يجب فهمه هو أنه عند تهيئة خادم HTTP باستخدامhttp.createServer()، يتم استدعاء رد الاتصال عندما يحصل الخادم على جميع رؤوس HTTP ، ولكن ليس نص الطلب.

الrequestالكائن الذي تم تمريره في رد الاتصال هو أمجرى.

لذلك ، يجب أن نستمع لمحتوى الجسم حتى تتم معالجته ، ومعالجته على شكل أجزاء.

نحصل أولاً على البيانات من خلال الاستماع إلى البثdataالأحداث ، وعندما تنتهي البيانات ، الدفقendتم استدعاء الحدث مرة واحدة:

const server = http.createServer((req, res) => {
  // we can access HTTP headers
  req.on('data', (chunk) => {
    console.log(`Data chunk available: ${chunk}`)
  })
  req.on('end', () => {
    //end of data
  })
})

لذا للوصول إلى البيانات ، بافتراض أننا نتوقع تلقي سلسلة ، يجب أن نضعها في مصفوفة:

const server = http.createServer((req, res) => {
  let data = []
  req.on('data', (chunk) => {
    data.push(chunk)
  })
  req.on('end', () => {
    JSON.parse(data).todo // 'Buy the milk'
  })
})

تحميل مجانيكتيب Node.js


المزيد من دروس العقدة: