Node.js ialah persekitaran masa jalan JavaScript bahagian pelayan yang sangat popular. Ia adalah alat yang berkuasa untuk membina aplikasi web berprestasi tinggi. Permintaan HTTP adalah penting apabila anda perlu mengumpul data daripada fungsi API. Oleh kerana kebanyakan API moden mengembalikan data dalam format JSON, pengendalian cara meminta dan mengembalikan data JSON ialah tugas yang sangat penting dalam Node.js.
Dalam Node.js, kami boleh menggunakan modul http
terbina dalam untuk membuat permintaan HTTP. Anda boleh mendapatkan data daripada pelayan jauh dengan menghantar permintaan HTTP dan menghuraikannya ke dalam data format JSON. Berikut ialah contoh membuat permintaan HTTP dan menerima respons JSON menggunakan Node.js:
const https = require('https'); const options = { hostname: 'api.example.com', port: 443, path: '/data', method: 'GET' }; const req = https.request(options, res => { console.log(`statusCode: ${res.statusCode}`); let data = ''; res.on('data', d => { data += d; }); res.on('end', () => { const json = JSON.parse(data); console.log(json); }); }); req.on('error', error => { console.error(error); }); req.end();
Dalam contoh di atas, modul https
menyediakan fungsi request()
di mana kita lulus options
Objek sebagai parameter. Objek ini mengandungi maklumat seperti nama hos, port, laluan permintaan dan kaedah permintaan. Fungsi request()
mengembalikan objek http.ClientRequest
dan kita boleh memanggil kaedah end()
objek untuk menghantar permintaan.
Apabila pelayan jauh bertindak balas kepada permintaan, kita boleh mendengar peristiwa "data" respons itu dan menambah data pada penimbal. Apabila respons selesai, kita boleh menggunakan fungsi JSON.parse()
untuk menghuraikan data dalam penimbal ke dalam data format JSON.
Apabila memproses respons API, kami perlu memastikan bahawa respons HTTP mempunyai kod status 200. Tetapi ini bukan satu-satunya kod status yang perlu ditangani, terdapat kod status biasa yang lain:
Kami juga perlu mengendalikan kod status ini. Sebagai contoh, apabila permintaan mengembalikan kod respons 404, kami boleh menghantar mesej seperti "Sumber Tidak Ditemui" kepada pengguna.
const https = require('https'); const options = { hostname: 'api.example.com', port: 443, path: '/data', method: 'GET' }; const req = https.request(options, res => { let data = ''; res.on('data', d => { data += d; }); res.on('end', () => { const json = JSON.parse(data); console.log(json); }); }); req.on('error', error => { console.error(error); }); req.end();
Dalam contoh di atas, kami mengabaikan kod status respons HTTP. Walaupun ini mudah, ia sangat tidak selamat. Jika pelayan mengembalikan kod status ralat, kami mungkin perlu mengetahui punca ralat. Untuk mencapai ini, kita perlu menyemak kod status respons dalam panggilan balik fungsi request()
. Jika kod status bukan 200, kami boleh menggunakan medan res.statusMessage
untuk mendapatkan mesej status respons:
const https = require('https'); const options = { hostname: 'api.example.com', port: 443, path: '/data', method: 'GET' }; const req = https.request(options, res => { if (res.statusCode !== 200) { console.error(`请求失败: ${res.statusMessage}`); res.resume(); return; } let data = ''; res.on('data', d => { data += d; }); res.on('end', () => { const json = JSON.parse(data); console.log(json); }); }); req.on('error', error => { console.error(error); }); req.end();
Dalam kod di atas, kami mencetak mesej ralat apabila kod status respons HTTP bukan 200 . Jika ralat ditemui, kami memanggil kaedah res.resume()
untuk mengosongkan cache dan menamatkan respons apabila memproses data selesai. Kadangkala berguna untuk memanggil kaedah res.resume()
jika anda menghadapi ralat permintaan yang bukan disebabkan oleh kod anda.
Ringkasan
Meminta dan menghuraikan data JSON dalam Node.js adalah sangat mudah. Modul HTTP terbina dalam menyediakan fungsi permintaan Dengan menggunakan fungsi ini, kami boleh menghantar permintaan HTTP dan menerima respons Json dalam program Node.js. Menggunakan kod di atas, kami boleh mendapatkan data titik akhir API dan menghuraikan data format JSON dengan mudah. Walau bagaimanapun, kita perlu memberi perhatian kepada beberapa situasi yang tidak normal, seperti kod status respons HTTP bukan 200, dan ralat permintaan HTTP yang lain. Dengan pengendalian ralat yang lengkap, kami boleh menjadikan kod kami lebih mantap.
Atas ialah kandungan terperinci permintaan nodejs mengembalikan data json. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!