Bagaimana saya bisa membuat permintaan HTTP dari dalam Node.js atau Express.js? Saya perlu terhubung ke layanan lain. Saya berharap panggilan tidak sinkron dan bahwa panggilan balik berisi respons server jauh.
sumber
Bagaimana saya bisa membuat permintaan HTTP dari dalam Node.js atau Express.js? Saya perlu terhubung ke layanan lain. Saya berharap panggilan tidak sinkron dan bahwa panggilan balik berisi respons server jauh.
Berikut ini cuplikan dari beberapa kode dari sampel milik saya. Asinkron dan mengembalikan objek JSON. Itu bisa melakukan segala bentuk permintaan GET.
Perhatikan bahwa ada cara yang lebih optimal (hanya sampel) - misalnya, daripada menyatukan potongan yang Anda masukkan ke dalam array dan bergabung dengannya dll ... Semoga, ini membuat Anda memulai ke arah yang benar:
const http = require('http');
const https = require('https');
/**
* getJSON: RESTful GET request returning JSON object(s)
* @param options: http options object
* @param callback: callback to pass the results JSON object(s) back
*/
module.exports.getJSON = (options, onResult) => {
console.log('rest::getJSON');
const port = options.port == 443 ? https : http;
let output = '';
const req = port.request(options, (res) => {
console.log(`${options.host} : ${res.statusCode}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
output += chunk;
});
res.on('end', () => {
let obj = JSON.parse(output);
onResult(res.statusCode, obj);
});
});
req.on('error', (err) => {
// res.send('error: ' + err.message);
});
req.end();
};
Disebut dengan membuat objek opsi seperti:
const options = {
host: 'somesite.com',
port: 443,
path: '/some/path',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
Dan menyediakan fungsi callback.
Misalnya, dalam sebuah layanan, saya memerlukan modul REST di atas dan kemudian lakukan ini:
rest.getJSON(options, (statusCode, result) => {
// I could work with the resulting HTML/JSON here. I could also just return it
console.log(`onResult: (${statusCode})\n\n${JSON.stringify(result)}`);
res.statusCode = statusCode;
res.send(result);
});
Jika Anda mencari async
/ await
(linear, tanpa panggilan balik), janji, waktu kompilasi, dan intellisense, kami menciptakan klien HTTP dan REST yang ringan yang sesuai dengan tagihan itu:
Coba gunakan
http.get(options, callback)
fungsi sederhana di node.js:Ada juga
http.request(options, callback)
fungsi umum yang memungkinkan Anda menentukan metode permintaan dan detail permintaan lainnya.sumber
GET
permintaan ini jika saya memiliki url ini?graph.facebook.com/debug_token? input_token={token-to-inspect} &access_token={app-token-or-admin-token}
?Permintaan dan Superagent adalah perpustakaan yang cukup bagus untuk digunakan.
catatan: permintaan sudah usang , gunakan dengan risiko Anda!
Menggunakan
request
:sumber
Anda juga dapat menggunakan Requestify , benar-benar dingin dan sangat sederhana HTTP klien saya menulis untuk nodeJS + mendukung caching.
Lakukan saja yang berikut ini untuk permintaan metode GET:
sumber
Versi ini didasarkan pada fungsi bryanmac yang awalnya diusulkan yang menggunakan janji, penanganan kesalahan yang lebih baik, dan ditulis ulang dalam ES6.
Akibatnya Anda tidak harus meneruskan fungsi panggilan balik, sebaliknya getJSON () mengembalikan janji. Dalam contoh berikut fungsi digunakan di dalam pengendali rute ExpressJS
Pada kesalahan ini mendelegasikan kesalahan ke server penanganan kesalahan middleware.
sumber
get
definisi rute Ekspres , yang banyak posting di sini kurang.Unirest adalah pustaka terbaik yang pernah saya temui untuk membuat permintaan HTTP dari Node. Ini bertujuan untuk menjadi kerangka kerja multi platform, jadi mempelajari cara kerjanya pada Node akan membantu Anda dengan baik jika Anda perlu menggunakan klien HTTP di Ruby, PHP, Java, Python, Objective C, .Net atau Windows 8 juga. Sejauh yang saya tahu, pustaka yang paling tidak didukung sebagian besar didukung oleh klien HTTP yang ada (misalnya di Jawa, klien HTTP Apache, pada Node, libary Permintaan Mikeal) - Unirest hanya menempatkan API yang lebih bagus di atasnya.
Berikut adalah beberapa contoh kode untuk Node.js:
Anda dapat melompat langsung ke Node docs di sini
sumber
Lihat rusak . Ini adalah klien HTTP node yang dibuat dan dikelola oleh spire.io yang menangani arahan ulang, sesi, dan respons JSON. Ini bagus untuk berinteraksi dengan API lainnya. Lihat posting blog ini untuk lebih jelasnya.
sumber
Lihat httpreq : ini adalah pustaka simpul yang saya buat karena saya merasa frustrasi karena tidak ada http GET atau modul POST sederhana di luar sana ;-)
sumber
Jika Anda hanya perlu membuat permintaan sederhana dan tidak memerlukan dukungan untuk metode HTTP lain, lihat: simple-get :
sumber
Gunakan reqclient : tidak dirancang untuk tujuan skrip seperti
request
atau banyak perpustakaan lainnya. Reqclient memungkinkan dalam konstruktor menentukan banyak konfigurasi yang berguna ketika Anda perlu menggunakan kembali konfigurasi yang sama berulang-ulang: URL dasar, header, opsi auth, opsi logging, caching, dll. Penguraian JSON, dll.Cara terbaik untuk menggunakan perpustakaan adalah membuat modul untuk mengekspor objek yang menunjuk ke API dan konfigurasi yang diperlukan untuk terhubung dengan:
Modul
client.js
:Dan di pengontrol di mana Anda perlu mengkonsumsi penggunaan API seperti ini:
reqclient
mendukung banyak fitur, tetapi memiliki beberapa yang tidak didukung oleh perpustakaan lain: OAuth2 integrasi dan integrasi logger dengan sintaks cURL , dan selalu mengembalikan objek Promise asli.sumber
Jika Anda perlu mengirim
GET
permintaan keIP
dan jugaDomain
(Jawaban lain tidak menyebutkan Anda dapat menentukanport
variabel), Anda dapat menggunakan fungsi ini:Jangan lewatkan membutuhkan modul di bagian atas file Anda:
Juga perhatikan bahwa Anda dapat menggunakan
https
modul untuk berkomunikasi melalui jaringan aman. jadi dua baris ini akan berubah:sumber
sumber