Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >nodejs meminta alasan enkapsulasi

nodejs meminta alasan enkapsulasi

WBOY
WBOYasal
2023-05-11 13:07:38746semak imbas

Dengan populariti pemisahan bahagian hadapan dan belakang, jurutera bahagian hadapan semakin perlu berhubung dengan bahagian belakang untuk berkomunikasi. Semasa proses ini, ramai jurutera mendapati terdapat banyak masalah dalam menggunakan XMLHttpRequest atau fetch asli secara langsung untuk membuat permintaan rangkaian. Oleh itu, banyak pasukan hadapan kini menggunakan perpustakaan permintaan pihak ketiga untuk membuat permintaan antara muka. Antaranya, perpustakaan permintaan permintaan yang dibangunkan oleh Node.js juga sangat popular.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan perpustakaan permintaan permintaan Node.js untuk merangkum permintaan antara muka, menjadikannya lebih mudah dan pantas bagi jurutera hadapan untuk berkomunikasi dengan antara muka.

Pasang perpustakaan Permintaan

Sebelum menggunakan perpustakaan Permintaan, anda perlu memasangnya terlebih dahulu. Ia boleh dipasang menggunakan arahan npm daripada baris arahan:

npm install request --save

Menghantar permintaan GET

Seterusnya, kami akan menggunakan perpustakaan Permintaan untuk menghantar beberapa permintaan biasa. Pertama, kita perlu menghantar permintaan GET menggunakan kaedah request.get().

const request = require('request');

request.get('https://api.github.com/', function(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
});

Dalam kod ini, kami mengakses API GitHub untuk mendapatkan kandungan halaman utamanya. Mula-mula, kami menghantar permintaan GET menggunakan kaedah request.get(), menghantar alamat API GitHub sebagai parameter. Ia akan menghantar permintaan kepada pelayan dan menunggu respons pelayan.

Apabila pelayan membalas, perpustakaan Permintaan akan menghantar maklumat respons kepada fungsi panggil balik. Ralat parameter menunjukkan sama ada terdapat ralat semasa proses permintaan, respons menunjukkan maklumat pengepala respons pelayan, dan badan menunjukkan kandungan khusus respons pelayan.

Dalam kod ini, kami mula-mula menentukan sama ada ralat berlaku melalui if (!error && response.statusCode == 200 Jika tiada ralat, kandungan respons akan dicetak.

Hantar permintaan POST

Seterusnya kami menghantar permintaan POST.

const request = require('request');

request.post({
    url: 'https://httpbin.org/post',
    form: {
        name: '张三',
        age: 18
    }
}, function(error, response, body) {
    if(!error) {
        console.log(body);
    }
});

Dalam kod ini, kami menghantar permintaan POST melalui kaedah request.post(), menghantar alamat permintaan dan parameter permintaan dalam bentuk objek. Parameter borang mewakili data borang permintaan POST Di sini kita lulus medan nama dan umur.

Begitu juga, apabila pelayan bertindak balas, perpustakaan Permintaan akan menghantar maklumat respons kepada fungsi panggil balik Kami juga boleh menentukan sama ada permintaan itu berjaya dengan menilai ralat dan kod respons, dan mencetak kandungan respons.

Hantar data JSON

Dalam pembangunan pemisahan bahagian hadapan dan belakang hari ini, kaedah permintaan yang sangat biasa ialah menghantar data JSON. Berikut ialah contoh kod untuk menghantar data JSON:

const request = require('request');

const data = {
    name: '李四',
    age: 20
};

const options = {
    method: 'POST',
    url: 'https://httpbin.org/post',
    json: true,
    body: data
};

request(options, function(error, response, body) {
    if(!error) {
        console.log(body);
    }
});

Dalam kod ini, kami mula-mula menentukan objek data untuk mewakili data JSON yang akan dihantar. Kemudian, kami mengkonfigurasi beberapa parameter permintaan melalui parameter pilihan:

  • kaedah mewakili kaedah permintaan, di sini kami menetapkannya kepada POST.
  • url mewakili alamat permintaan, yang juga https://httpbin.org/post.
  • json bermaksud kami mahu menghantar data dalam format JSON.
  • body ialah data khusus yang ingin kami hantar.

Dalam kaedah request(), kami menghantar parameter pilihan masuk. Seperti kod sampel sebelumnya, apabila pelayan bertindak balas, perpustakaan Permintaan akan menghantar maklumat respons kepada fungsi panggil balik.

Ralat pengendalian semasa menghantar permintaan

Dalam proses membuat permintaan antara muka, tidak dapat dielakkan untuk menghadapi banyak ralat, seperti tamat masa sambungan rangkaian, alamat permintaan tidak wujud, dsb. Berikut ialah kod sampel untuk pengendalian ralat:

const request = require('request');

const data = {
    name: '李四',
    age: 20
};

const options = {
    method: 'POST',
    url: 'https://httpbin.org/post',
    json: true,
    body: data,
    timeout: 5000 // 设置请求超时时间
};

request(options, function(error, response, body) {
    if(error) {
        console.log('请求发生错误:', error);
    } else {
        if(response.statusCode == 200) {
            console.log('响应内容:', body);
        } else {
            console.log('请求失败,状态码:', response.statusCode);
        }
    }
});

Dalam kod ini, kami mula-mula menetapkan parameter options.timeout untuk menunjukkan tamat masa permintaan untuk mengelakkan halaman tersekat disebabkan permintaan yang mengambil masa terlalu lama tanpa balasan. Jika ralat berlaku, kami menggunakan console.log() dalam fungsi panggil balik untuk mengeluarkan mesej ralat. Jika tiada ralat, kod status respons ditentukan Jika kod status ialah 200, kandungan respons akan dicetak. Jika tidak, cetak kod status kegagalan permintaan.

Mengenkapsulkan fungsi antara muka permintaan

Apabila menggunakan perpustakaan Permintaan untuk membuat permintaan antara muka, kami boleh merangkum kaedah permintaan biasa untuk mengelakkan terlalu banyak kod berulang. Berikut ialah kod sampel yang merangkum fungsi antara muka permintaan:

const request = require('request');

function requestApi(url, method, data) {
    const options = {
        method: method,
        url: url,
        json: true,
        timeout: 5000
    };

    if(method == 'GET') {
        options.method = 'GET';
    } else if(method == 'POST') {
        options.method = 'POST';
        options.body = data;
    } else if(method == 'PUT') {
        options.method = 'PUT';
        options.body = data;
    } else if(method == 'DELETE') {
        options.method = 'DELETE';
        options.body = data;
    }

    return new Promise(function(resolve, reject) {
        request(options, function(error, response, body) {
            if(error) {
                reject(error);
            } else {
                if(response.statusCode == 200) {
                    resolve(body);
                } else {
                    reject(response.statusCode);
                }
            }
        });
    });
}

Dalam kod ini, kami mula-mula mentakrifkan fungsi requestApi(). Ia mengandungi tiga parameter:

  • url mewakili alamat yang diminta.
  • kaedah mewakili kaedah yang diminta.
  • data mewakili data yang diminta.

Dalam fungsi, kami mentakrifkan objek pilihan untuk menyimpan beberapa parameter konfigurasi permintaan. Mengikut kaedah permintaan yang berbeza, kami menetapkan nilai options.method dan nilai options.body.

Kemudian, kami menggunakan Promise untuk pemprosesan tak segerak. Dalam fungsi panggil balik kaedah request(), kami menggunakan resolve() untuk menghantar kandungan respons dan reject() untuk menghantar mesej ralat dan kod status. Menggunakan kaedah then() dan catch() bagi objek Promise, kami boleh melakukan pemprosesan yang sepadan selepas meminta data.

Ringkasan

Menggunakan perpustakaan Permintaan Node.js untuk membuat permintaan antara muka ialah cara yang sangat mudah dan pantas. Ia boleh mengelakkan beberapa masalah yang disebabkan oleh menggunakan XMLHttpRequest asli atau ambil secara langsung, dan juga boleh mengendalikan beberapa ralat biasa. Kami boleh merangkum permintaan biasa ke dalam fungsi mengikut keperluan sebenar dan memanggilnya dalam projek untuk menjadikan kod lebih ringkas dan mudah difahami.

Atas ialah kandungan terperinci nodejs meminta alasan enkapsulasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn