Yanıtlar:
Tam bir örnek için HTTP modülünün belgelerine bakın:
https://nodejs.org/api/http.html#http_http_request_options_callback
request.js
github.com/mikeal/request
cURL
komutunuzu node.js isteğine dönüştürebilir : curl.trillworks.com/#node
http
Eğer sunucuları çalıştırmak için kullandığı modül aynı zamanda uzak isteklerini yapmak için kullanılır.
Dokümanlarındaki örnek:
var http = require("http");
var options = {
host: 'www.google.com',
port: 80,
path: '/upload',
method: 'POST'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write('data\n');
req.write('data\n');
req.end();
request
- npmjs.com/package/request - kullanın ve 2018'de daha iyi bir cevap olan aşağıdaki Nitish'in cevabını
istek modülünü kolayca kullanabilirsiniz:
https://www.npmjs.com/package/request
Basit kod:
var request = require('request');
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Show the HTML for the Google homepage.
}
else {
console.log("Error "+response.statusCode)
}
})
Görünüşe node-curl
göre ölü olduğu için çatalladım, yeniden adlandırdım ve daha kıvrımlı olacak ve Windows altında derleyecek şekilde değiştirdim.
Kullanım örneği:
var Curl = require( 'node-libcurl' ).Curl;
var curl = new Curl();
curl.setOpt( Curl.option.URL, 'www.google.com' );
curl.setOpt( 'FOLLOWLOCATION', true );
curl.on( 'end', function( statusCode, body, headers ) {
console.info( statusCode );
console.info( '---' );
console.info( body.length );
console.info( '---' );
console.info( headers );
console.info( '---' );
console.info( this.getInfo( Curl.info.TOTAL_TIME ) );
this.close();
});
curl.on( 'error', function( err, curlErrorCode ) {
console.error( err.message );
console.error( '---' );
console.error( curlErrorCode );
this.close();
});
curl.perform();
Perform zaman uyumsuzdur ve şu anda senkronize kullanmanın bir yolu yoktur (ve muhtemelen hiçbir zaman sahip olmayacaktır).
Hala alfa, ama bu yakında değişecek ve yardım takdir edilecektir.
Artık Easy
senkronizasyon istekleri için tanıtıcıyı doğrudan kullanmak mümkündür , örnek:
var Easy = require( 'node-libcurl' ).Easy,
Curl = require( 'node-libcurl' ).Curl,
url = process.argv[2] || 'http://www.google.com',
ret, ch;
ch = new Easy();
ch.setOpt( Curl.option.URL, url );
ch.setOpt( Curl.option.HEADERFUNCTION, function( buf, size, nmemb ) {
console.log( buf );
return size * nmemb;
});
ch.setOpt( Curl.option.WRITEFUNCTION, function( buf, size, nmemb ) {
console.log( arguments );
return size * nmemb;
});
// this call is sync!
ret = ch.perform();
ch.close();
console.log( ret, ret == Curl.code.CURLE_OK, Easy.strError( ret ) );
Ayrıca, proje şimdi kararlı!
node tools/retrieve-win-deps && node tools/generate-stubs && node-gyp rebuild
adım sırasında . Düşüncesi olan var mı?
$ apt-get install libcurl4-openssl-dev
-L
seçeneği bir şekilde kullanabilir misin ?
curl.setOpt( 'FOLLOWLOCATION', true );
. Btw, bunun gibi sorular, sorun izleyiciye bu yorum bölümünden daha uygundur . ;)
Yeni projeler için lütfen istek kullanmaktan kaçının, çünkü proje bakım modunda ve sonunda kullanımdan kaldırılacak
https://github.com/request/request/issues/3142
Bunun yerine Axios'u tavsiye ederim , kütüphane Node en son standartlarına uygundur ve bunu geliştirmek için bazı eklentiler vardır, sahte sunucu yanıtları, otomatik yeniden denemeler ve diğer özellikler sağlanır.
https://github.com/axios/axios
const axios = require('axios');
// Make a request for a user with a given ID
axios.get('/user?ID=12345')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.then(function () {
// always executed
});
Veya async / await kullanarak:
try{
const response = await axios.get('/user?ID=12345');
console.log(response)
} catch(axiosErr){
console.log(axiosErr)
}
Genellikle REQUEST, Node.js için basitleştirilmiş ama güçlü bir HTTP istemcisi kullanıyorum
https://github.com/request/request
NPM'de
npm install request
İşte bir kullanım örneği:
var request = require('request');
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Show the HTML for the Google homepage.
}
})
Yukarıdaki örnekler işe yarıyor ancak gerçek bir dünya örneğiyle gerçekten ilgilenecek kadar ileri gitmeyin (örneğin, birden fazla parça halinde gelen verileri işlediğinizde. Emin olmanız gereken bir şey, 'yığın' işleyicisine sahip olmanızdır. verileri bir diziye (bunu JS'de yapmanın en hızlı yolu) ve hepsini bir araya getiren bir 'son' işleyiciye geri gönderebilirsiniz.
Bu, özellikle büyük isteklerle (5000+ satır) çalışırken ve sunucu size bir grup veri gönderdiğinde gereklidir.
Programlarımdan birinde (kahve) bir örnek: https://gist.github.com/1105888
Örneğin, https://github.com/joyent/node/wiki/modules#wiki-tcp . Çok hızlı bir özet =>
Kıvrım benzeri bir istekte bulunmak için npm modülü vardır npm curlrequest
.
Aşama 1: $npm i -S curlrequest
Adım 2: Düğüm dosyanızda
let curl = require('curlrequest')
let options = {} // url, method, data, timeout,data, etc can be passed as options
curl.request(options,(err,response)=>{
// err is the error returned from the api
// response contains the data returned from the api
})
Daha fazla okuma ve anlama için npm curlrequest
İstek npm modülünü ve çağrı sonrası kullanın
var request = require('request');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
En iyi uygulama için bazı winston logger modülünü veya basit bir console.log kullanın ve ardından uygulamanızı aşağıdaki gibi çalıştırın
npm start output.txt
Yukarıdaki komutun sonucu, console.log'da yazdırdığınız tüm verileri içeren kökte bir txt dosyası oluşturur
Ben kullanarak sona erdi hırıltı-kabuk kütüphanesi.
İşte EdgeCast API ile çalışmayı düşünen herkes için tam olarak uygulanmış Grunt görevim için kaynak özgeçmişim. Örneğimde, CDN'yi temizleyen curl komutunu yürütmek için bir homurdanma kabuğu kullandığımı göreceksiniz.
Bu, Düğüm içinde çalışmak için bir HTTP isteği almaya çalışırken saatler geçirdikten sonra sona erdi. Biri Ruby ve Python'da çalıştırabildim, ancak bu projenin gereksinimlerini karşılamadım.
Reqclient kullanır , tüm etkinliği cURL stiliyle (geliştirme ortamları için isteğe bağlı) request
kaydetmenizi sağlayan küçük bir istemci modülüdür . URL ve parametre ayrıştırma, kimlik doğrulama entegrasyonları, önbellek desteği vb.Gibi güzel özelliklere de sahiptir.
Örneğin, bir istemci nesnesi oluşturursanız bir istekte bulunun:
var RequestClient = require("reqclient").RequestClient;
var client = new RequestClient({
baseUrl:"http://baseurl.com/api/v1.1",
debugRequest:true, debugResponse:true
});
var resp = client.post("client/orders", {"client":1234,"ref_id":"A987"}, {headers: {"x-token":"AFF01XX"}})
Konsol içinde şöyle bir şey kaydeder:
[Requesting client/orders]-> -X POST http://baseurl.com/api/v1.1/client/orders -d '{"client": 1234, "ref_id": "A987"}' -H '{"x-token": "AFF01XX"}' -H Content-Type:application/json
[Response client/orders]<- Status 200 - {"orderId": 1320934}
İstek bir Promise nesnesi döndürür , bu nedenle sonuçla başa çıkmanız then
ve bununla catch
ne yapmanız gerekir .
reqclient
ile kullanılabilir NPM , sizinle modülü yükleyebilirsiniz: npm install reqclient
.
IOT RaspberryPi'den bulut DB'ye POST verileri gönderirken bir sorun yaşadım, ancak saatlerden sonra düzleştirmeyi başardım.
Bunu yapmak için komut istemini kullandım.
sudo curl --URL http://<username>.cloudant.com/<database_name> --user <api_key>:<pass_key> -X POST -H "Content-Type:application/json" --data '{"id":"123","type":"987"}'
Komut istemi sorunları gösterecektir - yanlış kullanıcı adı / geçiş; kötü istek vb.
--URL veritabanı / sunucu konumu (Ben basit ücretsiz Cloudant DB kullandım) - kullanıcı kimlik doğrulama kısmı kullanıcı adı: pass API ile girdiğim pass -X hangi komutu çağırmak için tanımlar (PUT, GET, POST, DELETE) -H içerik türü - Cloudant, JSON'un kullanıldığı belge veritabanı ile ilgilidir - veri içeriğinin kendisi JSON olarak sıralanmıştır
İstek npm modülü İstek düğümü moulde kullanımı iyidir, alma / gönderme isteği için seçenek ayarlarına sahiptir ve ayrıca üretim ortamında da yaygın olarak kullanılır.
Böyle bir şey kullanmayı denemek isteyebilirsiniz
curl = require('node-curl');
curl('www.google.com', function(err) {
console.info(this.status);
console.info('-----');
console.info(this.body);
console.info('-----');
console.info(this.info('SIZE_DOWNLOAD'));
});
İstek npm modülünü kullanabilirsiniz. Kullanımı çok basit. İstek, http aramaları yapmanın mümkün olan en basit yolu olacak şekilde tasarlanmıştır. HTTPS'yi destekler ve varsayılan olarak yönlendirmeleri takip eder.
var request = require('request');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
http.request
...