Artikel ini memperkenalkan 6 metode berbeda untuk memulai permintaan HTTP di nodejs. Di sini kami akan menyelesaikan penggunaan setiap metode berbeda dengan meminta掘金社区的板块分类接口
sebagai demonstrasi , kita perlu menginstal chalk库
terlebih dahulu untuk menambahkan warna pada data yang dicetak. Oke, kita akan mulai~
Node.js dilengkapi dengan modul https di perpustakaan standar, jadi Anda tidak perlu melakukannya. membutuhkannya sama sekali Perkenalkan perpustakaan apa pun untuk memulai permintaan, karena node.js sendiri dapat menyelesaikannya, dan itu lebih dari cukup untuk menangani beberapa permintaan data sederhana.
const chalk = memerlukan("kapur") const https = memerlukan('https') https.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', res => { biarkan daftar = []; res.on('data', potongan => { daftar.push(potongan); }); res.pada('akhir', () => { const { data } = JSON.parse(Buffer.concat(daftar).toString()); data.untukSetiap(item => { console.log(`${kapur.kuning.bold(item.peringkat)}.${kapur.hijau(nama_kategori item)}`); }) }); }).on('kesalahan', salah => { console.log('Kesalahan: ', err.pesan); });
Strukturnya agak rumit, karena kita perlu membuat daftar array kosong untuk menyimpan potongan data permintaan, dan kemudian setelah permintaan selesai, kita perlu memproses data melalui Buffer dan kemudian menguraikannya ke dalam format json .
percaya bahwa teman-teman front-end sudah familiar dengan axios. Ini adalah perpustakaan permintaan Promise yang sangat populer dan populer. Ini dapat digunakan pada browser dan klien, dan seperti yang kita semua tahu, ini juga memiliki fungsi yang sangat nyaman seperti pencegat dan konversi data otomatis ke json.
Kita dapat menggunakan perintah berikut untuk menginstal axios:
npm i -S axios
Berikut adalah contoh sederhana bagaimana kita mendapatkan klasifikasi bagian Nuggets melalui axios:
const chalk = require("chalk") const aksio = memerlukan('aksios'); axios.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .lalu(res => { const {data} = res.data data.untukSetiap(item => { console.log(`${kapur.kuning.bold(item.peringkat)}.${kapur.hijau(nama_kategori item)}`); }) }) .menangkap(err => { console.log('Kesalahan: ', err.pesan); });
Disini axios langsung menggunakan permintaan get untuk meminta antarmuka. Strukturnya juga bisa dalam bentuk janji, dan data secara otomatis diurai ke dalam json untuk Anda, yang bisa dikatakan sangat sederhana dan nyaman.
klaim sebagai "perpustakaan permintaan HTTP Node.js yang ramah pengguna dan kuat". Keramahan pengguna terletak pada penggunaan API gaya Promise dan konfigurasi pemrosesan JOSN, dan beberapa seperti dukungan HTTP2, API paging, dan caching RFC. dan kemampuan lainnya tidak tersedia di sebagian besar perpustakaan permintaan.
Kita dapat menggunakan perintah berikut untuk menginstal got:
npm i -S [email protected]
Berikut adalah contoh sederhana bagaimana kita mendapatkan klasifikasi bagian Nuggets melalui got:
const chalk = require("chalk") const dapat = memerlukan('mendapat'); mendapat.mendapatkan('https://api.juejin.cn/tag_api/v1/query_category_briefs', { tipe respons: 'json' }) .lalu(res => { const {data} = res.body data.untukSetiap(item => { console.log(`${kapur.kuning.bold(item.peringkat)}.${kapur.hijau(nama_kategori item)}`); }) }) .menangkap(err => { console.log('Kesalahan: ', err.pesan); });
Di sini pertama-tama kita perlu mengkonfigurasi antarmuka permintaan dengan {responseType: 'json'}
, dan kemudian data yang dikembalikan dapat diperoleh di badan, yang juga sangat mudah digunakan.
needle adalah pustaka permintaan yang relatif sederhana dan ringkas. Dapat berupa fungsi Promise atau callback. Anda dapat memilihnya sesuai dengan kebiasaan Anda. Selain itu, nilai kembaliannya akan secara otomatis mengonversi XML dan JSON, yang juga sangat berguna .kenyamanan.
Kita dapat menggunakan perintah berikut untuk memasang jarum:
npm i -S needle
Berikut adalah contoh sederhana bagaimana kita memperoleh klasifikasi bagian Nuggets melalui jarum:
const chalk = require("chalk") const jarum = memerlukan('jarum'); needle.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', (err, res) => { if (err) return console.log('Error: ', err.message); const {data} = res.body data.untukSetiap(item => { console.log(`${kapur.kuning.bold(item.peringkat)}.${kapur.hijau(nama_kategori item)}`); }) })
Di sini kami mendemonstrasikan menggunakan fungsi panggilan balik. Terlihat ada err dan res yang dikembalikan. Jika berhasil, err bernilai nol. Isi res yang dikembalikan setelah berhasil adalah data yang diminta. Format json yang bagus.
Jika ingin menggunakan Promise, Anda bisa menulis seperti ini:
needle('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(fungsi(res) { // ... }) .menangkap(fungsi(err) { // ... });Pustaka permintaan
dirilis cukup awal, sejak tahun 2011, tetapi ini adalah pustaka permintaan HTTP klien progresif yang mendukung banyak fungsi klien HTTP tingkat lanjut dengan modul Node.js dengan API yang sama.
Kita dapat menggunakan perintah berikut untuk menginstal superagent:
npm i -S superagent
Berikut adalah contoh sederhana bagaimana kita mendapatkan klasifikasi bagian Nuggets melalui superagent:
const chalk = require("chalk") const superagent = memerlukan('superagent'); superagent.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .lalu(res => { const { data } = JSON.parse(res.teks) data.untukSetiap(item => { console.log(`${kapur.kuning.bold(item.peringkat)}.${kapur.hijau(nama_kategori item)}`); }) }) .menangkap(err => { console.log('Kesalahan: ', err.pesan); });
Penggunaan superagent saat ini sangat mirip dengan axios, tetapi Anda perlu memproses sendiri datanya ke dalam format json.
Seperti namanya,adalah pustaka permintaan yang API-nya konsisten dengan window.fetch dan juga berbasis janji. Ini sangat populer akhir-akhir ini, tapi mungkin masalah terbesarnya adalah ada perbedaan besar antara versi v2 dan v3. V2 mempertahankan standar cjs, sedangkan v3 menggunakan metode ejs, yang mungkin menyebabkan beberapa masalah setelah peningkatan. untuk menyatukan standar ini, kami Versi 2.6.7 digunakan di sini sebagai versi demonstrasi.
Kita dapat menggunakan perintah berikut untuk menginstal node-fetch:
npm i -S [email protected]
Berikut adalah contoh sederhana bagaimana kita mendapatkan klasifikasi bagian Nuggets melalui node-fetch:
const chalk = require("chalk") const mengambil = memerlukan("pengambilan simpul") ambil('https://api.juejin.cn/tag_api/v1/query_category_briefs', { metode: 'DAPATKAN' }) .then(async res => { biarkan { data } = tunggu res.json() data.untukSetiap(item => { console.log(`${kapur.kuning.bold(item.peringkat)}.${kapur.hijau(nama_kategori item)}`); }) }) .menangkap(err => { console.log('Kesalahan: ', err.pesan); });
Dapat dilihat bahwa ini digunakan persis sama dengan window.fetch, tanpa tekanan pembelajaran apa pun.
, mari kita lihat grafik tren pengunduhan pustaka permintaan ini dalam setahun terakhir:
Sekarang kita dapat melihat bahwa node-fetch adalah yang paling populer dan paling tidak populer dalam hal pengunduhan selama setahun terakhir.
Versi | Bintang | Ukuran Belum Dikemas | Tahun Dibuat | |
---|---|---|---|---|
axios | 91.642 | 0,26.1 | 398 kB | 2014 |
mendapat | 10.736 | 12.0.1 | 244 kB | 2014 |
needle | 1.446 | 3.0.0 | 227 kB | 2012 |
superagent | 15.928 | 7.1.1 | 581 kB | 2011 |
node-fetch | 7 | , 4343.2.3 | 106 kB | 2015Di | Sini
Kami Setelah menghitung beberapa data lain dari perpustakaan ini, jumlah bintang aksio bisa dikatakan tidak ada bandingannya, jauh melebihi jumlah beberapa perpustakaan lainnya.
Pustaka permintaan ini, semuanya melakukan hal yang sama dan dapat memulai permintaan HTTP. Mungkin metode penulisannya sedikit berbeda, tetapi semua jalan menuju ke Roma. Secara pribadi, mungkin karena saya sering menulis di sisi browser, jadi saya adalah pengguna setia axios. Baik itu berlatih atau mengembangkan axios, itu adalah pilihan pertama saya perhatian, dan paketnya juga sangat kecil. Sering digunakan saat latihan, tetapi API masih belum senyaman axios.
Faktanya, ada dua pustaka permintaan HTTP terkenal yang tidak disebutkan dalam artikel ini:
satu adalah ky.js, yang merupakan pustaka permintaan gaya pengambilan yang sangat kecil dan kuat. Ini terutama dibuat untuk deno dan browser modern, jadi saya tidak akan berpartisipasi di dalamnya untuk sementara waktu. Diskusi, siswa yang tertarik dapat mengeksplorasi sendiri.
Yang lainnya adalah request.js. Alasan mengapa tidak disebutkan adalah karena sudah tidak digunakan lagi pada tahun 2020. Jika Anda sudah menggunakannya, Anda dapat mengganti permintaan di proyek dengan metode lain.
Artikel ini direproduksi dari: https://juejin.cn/post/7074749427637813284
Penulis: jsmask